Katakan selamat tinggal kepada pertanyaan SQL yang membosankan! Memudahkan operasi pangkalan data dengan fluentpdo
Adakah anda bosan menulis pertanyaan SQL juga? Terutama apabila masa adalah ketat. Jika anda seperti saya, hari ini kita akan belajar alat yang sangat sejuk: fluentpdo. Jika anda tidak biasa dengan istilah "PDO", jangan risau. Ia adalah konsep yang sangat mudah: Di dunia PHP, PDO bermaksud objek data yang berterusan, yang membantu anda abstrak beberapa operasi pangkalan data asas (seperti penyisipan, kemas kini, memadam, dll.). Ia adalah lapisan abstraksi antara anda dan pangkalan data.
apa hasilnya? Tidak perlu lagi menulis pertanyaan SQL! Ini mungkin bukan projek pertama yang pernah anda lihat: Terdapat banyak projek yang serupa di pasaran, masing -masing dengan ciri -ciri utamanya. Ciri utama Fluentpdo adalah pembina pertanyaannya yang kuat.
mata utama
- fluentpdo adalah pembina pertanyaan php SQL yang abstrak operasi pangkalan data asas tanpa menulis pertanyaan SQL. Ciri utamanya ialah pembina pertanyaan yang kuat.
- Pemasangan fluentpdo dilakukan melalui komposer tanpa sebarang konfigurasi tambahan. INTEGANIATE Objek PDO dengan meluluskannya sebagai parameter kepada pembina objek FluentPDO.
- FluentPDO menyediakan sintaks mudah dan mudah dibaca untuk operasi pilih asas, termasuk kaedah untuk menetapkan jadual, hasil penapis, dan menentukan pengendali perbandingan. Ia juga membolehkan pemilihan bidang tertentu, menetapkan had dan parameter mengimbangi, dan menggunakan kumpulan yang mempunyai, oleh, dan memerintahkan dengan arahan.
- FluentPDO juga menyokong operasi data menggunakan kelas operasi Insert, Update, dan Delete. Operasi ini memerlukan kaedah pelaksanaan () untuk menjalankan pertanyaan dan menukar pangkalan data.
- Ciri-ciri canggih FluentPDO termasuk pembina pertanyaan gabungan (kod memudahkan pertanyaan gabungan) dan sistem debugger terbina dalam (untuk ujian dan pemeriksaan pertanyaan).
projek ujian fluentpdo kami
Pertama, kita memerlukan projek sampel untuk melakukannya. Mari kita fikirkan ... Bagaimana dengan senarai keinginan berbilang pengguna yang mudah?
Akan ada banyak pengguna, dan setiap pengguna mempunyai produk kegemaran mereka sendiri. Bagi setiap pengguna, kami akan menyimpan nama pertama mereka, nama belakang dan tarikh pendaftaran. Bagi setiap item, kami akan menyimpan namanya, jenama, harga dan ID pengguna yang berkaitan.
Saya akan menggunakan pangkalan data MySQL yang mudah. Berikut adalah struktur data kami:
CREATE TABLE IF NOT EXISTS items ( id int(11) NOT NULL AUTO_INCREMENT, name varchar(100) NOT NULL, brand varchar(100) NOT NULL, price decimal(10,2) NOT NULL, user_id int(10) unsigned NOT NULL, PRIMARY KEY (id), KEY user_id (user_id) ) ENGINE=InnoDB DEFAULT CHARSET=utf8 AUTO_INCREMENT=5 ; INSERT INTO items (id, name, brand, price, user_id) VALUES (1, 'Last Awesome Phone', 'Awesome Brand', '550.00', 1), (2, 'Last Awesome TV', 'Awesome Brand', '1200.00', 1), (3, 'Fantastic E-Car', 'E-Cars Inc.', '80000.00', 2), (4, 'Fantastic E-Bike', 'E-Bikes Co. Ltd.', '16000.00', 2); CREATE TABLE IF NOT EXISTS users ( id int(10) unsigned NOT NULL AUTO_INCREMENT, first_name varchar(100) NOT NULL, last_name varchar(100) NOT NULL, signup_date datetime NOT NULL, PRIMARY KEY (id) ) ENGINE=InnoDB DEFAULT CHARSET=utf8 AUTO_INCREMENT=3; INSERT INTO users (id, first_name, last_name, signup_date) VALUES (1, 'Francesco', 'Malatesta', '2014-06-29 13:00:00'), (2, 'John', 'Foo Bar', '2014-06-20 11:16:39'); ALTER TABLE items ADD CONSTRAINT items_ibfk_1 FOREIGN KEY (user_id) REFERENCES users (id);Nota: Seperti yang anda boleh bayangkan dengan mudah, ini bukan projek "lengkap". Kami hanya mencuba Fluentpdo, jadi kami tidak akan melindungi perkara seperti log masuk, pendaftaran, atau struktur permohonan.
Pemasangan
anda boleh memasang fluentpdo menggunakan komposer dan memasukkannya sebagai kebergantungan:
"require": { ... "lichtner/fluentpdo": "dev-master" }Apabila anda selesai, anda perlu memberi contoh seperti ini:
CREATE TABLE IF NOT EXISTS items ( id int(11) NOT NULL AUTO_INCREMENT, name varchar(100) NOT NULL, brand varchar(100) NOT NULL, price decimal(10,2) NOT NULL, user_id int(10) unsigned NOT NULL, PRIMARY KEY (id), KEY user_id (user_id) ) ENGINE=InnoDB DEFAULT CHARSET=utf8 AUTO_INCREMENT=5 ; INSERT INTO items (id, name, brand, price, user_id) VALUES (1, 'Last Awesome Phone', 'Awesome Brand', '550.00', 1), (2, 'Last Awesome TV', 'Awesome Brand', '1200.00', 1), (3, 'Fantastic E-Car', 'E-Cars Inc.', '80000.00', 2), (4, 'Fantastic E-Bike', 'E-Bikes Co. Ltd.', '16000.00', 2); CREATE TABLE IF NOT EXISTS users ( id int(10) unsigned NOT NULL AUTO_INCREMENT, first_name varchar(100) NOT NULL, last_name varchar(100) NOT NULL, signup_date datetime NOT NULL, PRIMARY KEY (id) ) ENGINE=InnoDB DEFAULT CHARSET=utf8 AUTO_INCREMENT=3; INSERT INTO users (id, first_name, last_name, signup_date) VALUES (1, 'Francesco', 'Malatesta', '2014-06-29 13:00:00'), (2, 'John', 'Foo Bar', '2014-06-20 11:16:39'); ALTER TABLE items ADD CONSTRAINT items_ibfk_1 FOREIGN KEY (user_id) REFERENCES users (id);
anda mesti menentukan butiran sambungan anda dalam kaedah pembina PDO. Dalam parameter pertama, taipkan nama pangkalan data anda selepas bahagian DBName =, dan tulis nama pengguna dan kata laluan anda sebagai parameter kedua dan ketiga.
Anda kemudian lulus objek PDO sebagai parameter kepada pembina objek FluentPDO.
itu sahaja, Fluentpdo tidak memerlukan apa -apa lagi untuk berfungsi. Tiada konfigurasi tambahan diperlukan.
Operasi Pilih Asas
Kami sudah mempunyai beberapa data maya. Mari kita mulakan dengan "Hello World" pertanyaan SQL. Pilihan mudah dengan klausa WHERE dan ID utama utama pengguna sebagai parameter untuk mendapatkan maklumat asas.
"require": { ... "lichtner/fluentpdo": "dev-master" }
tidak ada yang sukar difahami di sini. Fluentpdo mempunyai sintaks yang baik dan mudah dibaca, jadi mudah untuk memahami apa yang kita lakukan.
Kaedahdari () digunakan untuk menetapkan jadual yang betul. Kaedah di mana () digunakan untuk menapis hasil kami dengan klausa nama yang sama. Secara lalai, dalam kaedah WHERE () anda hanya menentukan nama dan nilai medan. "=" adalah tersirat. Sudah tentu, anda juga boleh menggunakan pengendali perbandingan yang berbeza. Dalam kes ini, anda perlu menulisnya selepas nama medan.
$pdo = new PDO("mysql:dbname=wishlist", "root", "password"); $fpdo = new FluentPDO($pdo);
Mendapatkan hasilnya sangat mudah: mereka disimpan dalam objek $ pertanyaan yang kami gunakan. Anda boleh melangkah ke atasnya menggunakan gelung foreach seperti yang ditunjukkan dalam contoh.
Dalam kes khusus ini (mencari item dengan ID utama utama), kita juga boleh menggunakan pintasan dalam kaedah dari ():
$user_id = 1; $query = $fpdo->from('users')->where('id', $user_id); foreach($query as $row){ echo 'Hello, ' . $row['first_name'] . ' ' . $row['last_name'] . '!'; }
mari kita lihat sesuatu yang lebih rumit daripada ini.
Pilih medan tertentu
Jika anda mahu, anda boleh menggunakan kaedah pilih () selepas dari () untuk memilih. Anda hanya perlu menggunakan array untuk memberitahu Fluentpdo medan yang anda mahu pilih.
ini adalah contoh:
$fpdo->from('items')->where('price >', 1000);
had dan mengimbangi
Menetapkan parameter had dan mengimbangi untuk mengambil hanya sebilangan baris dari pangkalan data adalah sangat mudah. Anda boleh menggunakan kaedah had () dan mengimbangi () seperti ini.
$query = fpdo->from('users', $user_id); // 將與...相同 $query = $fpdo->from('users')->where('id', $user_id);
Satu -satunya hujah untuk kedua -dua kaedah ini adalah integer yang menentukan nilai yang diperlukan (untuk had (), ia adalah bilangan item; untuk mengimbangi (), ia adalah bilangan item yang akan dilangkau).
mempunyai, kumpulan dan memerintahkan oleh
Kaedah juga disediakan untuk arahan "mempunyai", "oleh" dan "pesanan dengan".
mari kita lihat mereka dengan beberapa contoh.
Pesanan oleh
KaedahorderBy () digunakan untuk menyusun hasil mengikut keadaan tertentu. Mari memberi contoh: Inilah cara menyusun keputusan dengan harga (dari murah hingga mahal).
$query = $fpdo->from('users')->select(array('first_name', 'last_name'))->where('id', $user_id);
Jika anda ingin membalikkan pesanan (dapatkan hasil dari yang paling mahal kepada yang paling murah), tambahkan "DESC" selepas lajur yang dipilih.
// 選擇前十個(gè)結(jié)果... $query = $fpdo->from('users')->where('id', $user_id)->limit(10)->offset(0);
Mempunyai
Kaedahmempunyai () mempunyai sintaks yang sangat mudah. Dalam contoh di bawah, kami menapis setiap item yang berharga kurang daripada $ 2,000.
$query = $fpdo->from('items')->orderBy('price');
sangat sederhana.
anda boleh menggunakan mana -mana pengendali perbandingan yang anda mahukan.
Kumpulan oleh
Gunakan kaedah GroupBy (), anda boleh mengumpulkan hasil menggunakan medan tertentu sebagai syarat. Di sini kita memaparkan kuantiti produk untuk setiap jenama.
CREATE TABLE IF NOT EXISTS items ( id int(11) NOT NULL AUTO_INCREMENT, name varchar(100) NOT NULL, brand varchar(100) NOT NULL, price decimal(10,2) NOT NULL, user_id int(10) unsigned NOT NULL, PRIMARY KEY (id), KEY user_id (user_id) ) ENGINE=InnoDB DEFAULT CHARSET=utf8 AUTO_INCREMENT=5 ; INSERT INTO items (id, name, brand, price, user_id) VALUES (1, 'Last Awesome Phone', 'Awesome Brand', '550.00', 1), (2, 'Last Awesome TV', 'Awesome Brand', '1200.00', 1), (3, 'Fantastic E-Car', 'E-Cars Inc.', '80000.00', 2), (4, 'Fantastic E-Bike', 'E-Bikes Co. Ltd.', '16000.00', 2); CREATE TABLE IF NOT EXISTS users ( id int(10) unsigned NOT NULL AUTO_INCREMENT, first_name varchar(100) NOT NULL, last_name varchar(100) NOT NULL, signup_date datetime NOT NULL, PRIMARY KEY (id) ) ENGINE=InnoDB DEFAULT CHARSET=utf8 AUTO_INCREMENT=3; INSERT INTO users (id, first_name, last_name, signup_date) VALUES (1, 'Francesco', 'Malatesta', '2014-06-29 13:00:00'), (2, 'John', 'Foo Bar', '2014-06-20 11:16:39'); ALTER TABLE items ADD CONSTRAINT items_ibfk_1 FOREIGN KEY (user_id) REFERENCES users (id);
Nota: Anda boleh menentukan alias untuk bidang seperti dalam SQL klasik.
Mendapatkan kaedah
ambil
Menggunakan Foreach bukanlah satu -satunya cara untuk mendapatkan hasilnya. Bagaimana jika kita hanya mahu mengambil hasil pertama dari koleksi?
Cukup gunakan kaedah pengambilan ():
"require": { ... "lichtner/fluentpdo": "dev-master" }
Anda juga boleh mendapatkan satu lajur dengan menentukan namanya sebagai parameter.
$pdo = new PDO("mysql:dbname=wishlist", "root", "password"); $fpdo = new FluentPDO($pdo);
FetchPairs
Menggunakan FetchPairs () Anda boleh mengambil keputusan sebagai array bersekutu. Gunakan sintaks berikut:
$user_id = 1; $query = $fpdo->from('users')->where('id', $user_id); foreach($query as $row){ echo 'Hello, ' . $row['first_name'] . ' ' . $row['last_name'] . '!'; }
anda akan mendapat output berikut:
$fpdo->from('items')->where('price >', 1000);
Ini adalah contoh menggunakan ID dan nama pengguna yang unik.
$query = fpdo->from('users', $user_id); // 將與...相同 $query = $fpdo->from('users')->where('id', $user_id);
Fetchall
yang terakhir tetapi tidak terkecuali adalah kaedah fetchall ().
Berikut adalah sintaks:
$query = $fpdo->from('users')->select(array('first_name', 'last_name'))->where('id', $user_id);
Menggunakan Fetchall () kita mempunyai kawalan sepenuhnya ke atas apa yang kita dapat dari hasilnya. Parameter pertama $ indeks adalah medan yang digunakan sebagai indeks, dan $ selecTOnly digunakan untuk menentukan medan yang akan dipilih.
ini adalah contoh:
// 選擇前十個(gè)結(jié)果... $query = $fpdo->from('users')->where('id', $user_id)->limit(10)->offset(0);
Nota: Lajur yang digunakan sebagai indeks (ID dalam kes ini) juga termasuk dalam array akhir.
Okay, sudah cukup mengenai operasi pilih. Mari kita lihat operasi CRUD yang lain.
masukkan, kemas kini dan padam
Fluentpdo bukan hanya memilih sesuatu. Ia juga mempunyai kelas yang memanipulasi data dengan cara yang mudah.
mari kita mulakan dengan operasi sisipan.
Masukkan
$query = $fpdo->from('items')->orderBy('price');Kaedah
insertInto () digunakan untuk menentukan jadual yang akan digunakan untuk operasi. Anda perlu menetapkan nilai yang diperlukan menggunakan kaedah nilai () (dalam kes ini, ia disimpan dalam array bersekutu $ nilai).
Langkah terakhir ialah kaedah pelaksanaan (), yang akan mengembalikan kunci utama rekod baru.
anda juga boleh menggunakan pintasan ini jika anda mahu:
$query = $fpdo->from('items')->orderBy('price DESC');
UPDATE
Kaedah kemas kini sangat serupa. Mari kita lihat contoh.
$query = $fpdo->from('items')->having('price <', 2000);Gunakan kaedah set (), anda boleh menentukan nilai baru untuk operasi kemas kini.
Gunakan kaedah WHERE (), kami menapis baris yang terjejas. Terdapat juga jalan pintas, seperti yang dinyatakan sebelum ini.
Padam
Padam operasi lebih mudah. Berikut adalah contoh yang cepat.
$query = $fpdo->from('items')->select('brand, COUNT(*) AS c')->groupBy('brand');Jika anda ingin memadam rekod yang mengetahui kunci utamanya, anda boleh menggunakan pintasan Deletefrom () di atas.
Nota: Seperti yang anda lihat dari contoh di sini, anda perlu menggunakan kaedah Execute () untuk menjalankan pertanyaan padam. Jika anda tidak melakukan ini, anda tidak akan mengubah apa -apa dalam pangkalan data. Begitu juga untuk memasukkan dan mengemas kini. Ingatlah ini.
Ciri -ciri Lanjutan
Seperti yang saya katakan sebelum ini, jenis projek ini mempunyai ciri unik mereka sendiri. Fluentpdo tidak terkecuali: kami akan menganalisis dua ciri ini: Builder Query Builder dan Debugger.
Sertai Builder Query
mungkin ciri unik yang paling penting dalam Fluentpdo. Pembina sangat berguna jika anda ingin memudahkan kerja anda dan menulis kod kurang. Mari lihat cara menggunakannya.
Kami akan bermula dengan pertanyaan "klasik" yang ditulis menggunakan fluentpdo.
Sama seperti ini:
$query = $fpdo->from('users'); $row = $query->fetch(); var_dump($row); // 將輸出: // array(4) { ["id"]=> string(1) "1" ["first_name"]=> string(9) "Francesco" ["last_name"]=> string(9) "Malatesta" ["signup_date"]=> string(19) "2014-06-29 13:00:00" }OK: Kami menggunakan sintaks klasik dalam kaedah leftjoin khas (). tidak teruk.
tetapi kita boleh melakukan yang lebih baik. Jika anda menggunakan konvensyen dalam struktur meja, anda boleh menggunakan kod ini:
CREATE TABLE IF NOT EXISTS items ( id int(11) NOT NULL AUTO_INCREMENT, name varchar(100) NOT NULL, brand varchar(100) NOT NULL, price decimal(10,2) NOT NULL, user_id int(10) unsigned NOT NULL, PRIMARY KEY (id), KEY user_id (user_id) ) ENGINE=InnoDB DEFAULT CHARSET=utf8 AUTO_INCREMENT=5 ; INSERT INTO items (id, name, brand, price, user_id) VALUES (1, 'Last Awesome Phone', 'Awesome Brand', '550.00', 1), (2, 'Last Awesome TV', 'Awesome Brand', '1200.00', 1), (3, 'Fantastic E-Car', 'E-Cars Inc.', '80000.00', 2), (4, 'Fantastic E-Bike', 'E-Bikes Co. Ltd.', '16000.00', 2); CREATE TABLE IF NOT EXISTS users ( id int(10) unsigned NOT NULL AUTO_INCREMENT, first_name varchar(100) NOT NULL, last_name varchar(100) NOT NULL, signup_date datetime NOT NULL, PRIMARY KEY (id) ) ENGINE=InnoDB DEFAULT CHARSET=utf8 AUTO_INCREMENT=3; INSERT INTO users (id, first_name, last_name, signup_date) VALUES (1, 'Francesco', 'Malatesta', '2014-06-29 13:00:00'), (2, 'John', 'Foo Bar', '2014-06-20 11:16:39'); ALTER TABLE items ADD CONSTRAINT items_ibfk_1 FOREIGN KEY (user_id) REFERENCES users (id);
hebat, bukan? Ok, cepat sangat keren ... tetapi bagaimana dengan pintar?
Lihat di sini:
"require": { ... "lichtner/fluentpdo": "dev-master" }
Ia menjadi lebih baik.
Malah, FluentPdo memahami apa yang anda mahu lakukan dan secara automatik membina pertanyaan menggunakan data yang anda berikan dalam kaedah PILIH () dengan rentetan format Table.FieldName.
anda boleh membaca pertanyaan binaan akhir untuk contoh terakhir di sini:
$pdo = new PDO("mysql:dbname=wishlist", "root", "password"); $fpdo = new FluentPDO($pdo);
Ini kelihatan baik.
Sudah tentu, anda boleh membuat alias untuk medan jika anda mahu:
$user_id = 1; $query = $fpdo->from('users')->where('id', $user_id); foreach($query as $row){ echo 'Hello, ' . $row['first_name'] . ' ' . $row['last_name'] . '!'; }
Debugger
Fluentpdo dilengkapi dengan sistem debugger terbina dalam yang boleh anda gunakan untuk menguji pertanyaan dan menyemaknya.
Ia menggunakan sistem penutupan yang mudah. Jika anda ingin menggunakan debugging, letakkan kod ini selepas menyambungkan kod.
$fpdo->from('items')->where('price >', 1000);
Anda boleh menyesuaikan penutupan seperti yang anda mahu, ingatlah untuk mengambil objek $ BaseQuery sebagai parameter.
Objek BaseQuery $ adalah contoh kelas BaseQuery.
Kesimpulan
fluentpdo adalah projek kecil dan mudah. Ia pasti tidak sesuai dengan setiap projek dan boleh diperbaiki - terutamanya jika tidak aktif selama enam bulan - tetapi untuk aplikasi kecil/sederhana, ia boleh menjadi pilihan yang baik sekiranya anda tidak mahu memperkenalkan rangka kerja besar dalam permainan . Ia adalah tradeoff yang baik kerana beberapa ciri -cirinya, seperti Builder Query Builder.
Soalan Lazim Mengenai Bermula Dengan Fluentpdo (Soalan Lazim)
Apa itu fluentpdo dan mengapa saya harus menggunakannya?
fluentpdo adalah pembina pertanyaan php SQL yang menggunakan PDO. Ia menyediakan antara muka yang mudah dan mudah digunakan untuk membuat pertanyaan SQL, menjadikannya lebih mudah bagi pemaju untuk berinteraksi dengan pangkalan data. Fluentpdo amat berguna bagi mereka yang tidak digunakan untuk menulis pertanyaan SQL mentah atau ingin mempercepat proses pembangunan. Ia menyokong semua fungsi SQL dan menyediakan cara yang selamat untuk mencegah serangan suntikan SQL.
bagaimana memasang fluentpdo?
fluentpdo boleh dipasang menggunakan komposer (Pengurus Ketergantungan PHP). Anda boleh memasangnya dengan menjalankan arahan composer require envms/fluentpdo
. Selepas menjalankan arahan ini, komposer akan memuat turun dan memasang Fluentpdo dan kebergantungannya ke dalam projek anda.
Bagaimana untuk menyambung ke pangkalan data menggunakan fluentpdo?
Untuk menyambung ke pangkalan data menggunakan fluentpdo, anda perlu membuat contoh baru kelas fluentpdo. Anda boleh melakukan ini dengan meluluskan contoh PDO kepada pembina fluentpdo. Berikut adalah contoh:
$query = fpdo->from('users', $user_id); // 將與...相同 $query = $fpdo->from('users')->where('id', $user_id);
bagaimana untuk melaksanakan pertanyaan pilih menggunakan fluentpdo?
Fluentpdo menyediakan antara muka yang mudah untuk melakukan pertanyaan pilih. Anda boleh menentukan jadual menggunakan kaedah from
dan menentukan lajur menggunakan kaedah select
. Berikut adalah contoh:
$query = $fpdo->from('users')->select(array('first_name', 'last_name'))->where('id', $user_id);
bagaimana untuk melaksanakan pertanyaan sisipan menggunakan fluentpdo?
3 Berikut adalah contoh:CREATE TABLE IF NOT EXISTS items ( id int(11) NOT NULL AUTO_INCREMENT, name varchar(100) NOT NULL, brand varchar(100) NOT NULL, price decimal(10,2) NOT NULL, user_id int(10) unsigned NOT NULL, PRIMARY KEY (id), KEY user_id (user_id) ) ENGINE=InnoDB DEFAULT CHARSET=utf8 AUTO_INCREMENT=5 ; INSERT INTO items (id, name, brand, price, user_id) VALUES (1, 'Last Awesome Phone', 'Awesome Brand', '550.00', 1), (2, 'Last Awesome TV', 'Awesome Brand', '1200.00', 1), (3, 'Fantastic E-Car', 'E-Cars Inc.', '80000.00', 2), (4, 'Fantastic E-Bike', 'E-Bikes Co. Ltd.', '16000.00', 2); CREATE TABLE IF NOT EXISTS users ( id int(10) unsigned NOT NULL AUTO_INCREMENT, first_name varchar(100) NOT NULL, last_name varchar(100) NOT NULL, signup_date datetime NOT NULL, PRIMARY KEY (id) ) ENGINE=InnoDB DEFAULT CHARSET=utf8 AUTO_INCREMENT=3; INSERT INTO users (id, first_name, last_name, signup_date) VALUES (1, 'Francesco', 'Malatesta', '2014-06-29 13:00:00'), (2, 'John', 'Foo Bar', '2014-06-20 11:16:39'); ALTER TABLE items ADD CONSTRAINT items_ibfk_1 FOREIGN KEY (user_id) REFERENCES users (id);
Bagaimana untuk melaksanakan pertanyaan kemas kini menggunakan fluentpdo?
Untuk melakukan pertanyaan kemas kini, anda boleh menentukan jadual menggunakan kaedah update
, tentukan nilai baru menggunakan kaedah set
, dan tentukan syarat menggunakan kaedah where
. Berikut adalah contoh:
"require": { ... "lichtner/fluentpdo": "dev-master" }
bagaimana untuk melakukan pertanyaan padam menggunakan fluentpdo?
Untuk melakukan pertanyaan padam, anda boleh menentukan jadual menggunakan kaedah deleteFrom
dan menentukan syarat menggunakan kaedah where
. Berikut adalah contoh:
$pdo = new PDO("mysql:dbname=wishlist", "root", "password"); $fpdo = new FluentPDO($pdo);
Bagaimana menangani kesilapan dalam fluentpdo?
Apabila ralat berlaku, Fluentpdo akan membuang pengecualian. Anda boleh menggunakan blok percubaan untuk menangkap pengecualian ini dan mengendalikannya dengan sewajarnya. Berikut adalah contoh:
$user_id = 1; $query = $fpdo->from('users')->where('id', $user_id); foreach($query as $row){ echo 'Hello, ' . $row['first_name'] . ' ' . $row['last_name'] . '!'; }
Bagaimana menggunakan transaksi di fluentpdo?
FluentPDO menyediakan kaedah untuk memulakan, melakukan dan melancarkan urus niaga. Anda boleh menggunakan beginTransaction
, commit
dan rollBack
kaedah masing -masing. Berikut adalah contoh:
$fpdo->from('items')->where('price >', 1000);
Bagaimana menggunakan fluentpdo untuk menyertai jadual?
Fluentpdo menyediakan antara muka yang mudah untuk menyambungkan jadual. Anda boleh menggunakan kaedah join
untuk menentukan jadual dan syarat. Berikut adalah contoh:
$query = fpdo->from('users', $user_id); // 將與...相同 $query = $fpdo->from('users')->where('id', $user_id);
Atas ialah kandungan terperinci Bermula dengan Fluentpdo. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Alat AI Hot

Undress AI Tool
Gambar buka pakaian secara percuma

Undresser.AI Undress
Apl berkuasa AI untuk mencipta foto bogel yang realistik

AI Clothes Remover
Alat AI dalam talian untuk mengeluarkan pakaian daripada foto.

Clothoff.io
Penyingkiran pakaian AI

Video Face Swap
Tukar muka dalam mana-mana video dengan mudah menggunakan alat tukar muka AI percuma kami!

Artikel Panas

Alat panas

Notepad++7.3.1
Editor kod yang mudah digunakan dan percuma

SublimeText3 versi Cina
Versi Cina, sangat mudah digunakan

Hantar Studio 13.0.1
Persekitaran pembangunan bersepadu PHP yang berkuasa

Dreamweaver CS6
Alat pembangunan web visual

SublimeText3 versi Mac
Perisian penyuntingan kod peringkat Tuhan (SublimeText3)

Masalah dan penyelesaian biasa untuk skop pembolehubah PHP termasuk: 1. Pembolehubah global tidak dapat diakses dalam fungsi, dan ia perlu diluluskan menggunakan kata kunci atau parameter global; 2. Pembolehubah statik diisytiharkan dengan statik, dan ia hanya dimulakan sekali dan nilai dikekalkan antara pelbagai panggilan; 3. Pembolehubah hyperglobal seperti $ _get dan $ _post boleh digunakan secara langsung dalam mana -mana skop, tetapi anda perlu memberi perhatian kepada penapisan yang selamat; 4. Fungsi Anonymous perlu memperkenalkan pembolehubah skop induk melalui kata kunci penggunaan, dan apabila mengubah suai pembolehubah luaran, anda perlu lulus rujukan. Menguasai peraturan ini boleh membantu mengelakkan kesilapan dan meningkatkan kestabilan kod.

Untuk mengendalikan muat naik fail PHP dengan selamat, anda perlu mengesahkan sumber dan jenis, mengawal nama fail dan laluan, menetapkan sekatan pelayan, dan memproses fail media dua kali. 1. Sahkan sumber muat naik untuk mengelakkan CSRF melalui token dan mengesan jenis mime sebenar melalui finfo_file menggunakan kawalan putih; 2. Namakan semula fail ke rentetan rawak dan tentukan pelanjutan untuk menyimpannya dalam direktori bukan web mengikut jenis pengesanan; 3. Konfigurasi PHP mengehadkan saiz muat naik dan direktori sementara Nginx/Apache melarang akses ke direktori muat naik; 4. Perpustakaan GD menyambung semula gambar -gambar untuk membersihkan data yang berpotensi.

Terdapat tiga kaedah umum untuk kod komen PHP: 1. Use // atau # untuk menyekat satu baris kod, dan disyorkan untuk menggunakan //; 2. Gunakan /.../ untuk membungkus blok kod dengan pelbagai baris, yang tidak boleh bersarang tetapi boleh diseberang; 3. Komen -komen kemahiran gabungan seperti menggunakan / jika () {} / untuk mengawal blok logik, atau untuk meningkatkan kecekapan dengan kunci pintasan editor, anda harus memberi perhatian kepada simbol penutupan dan mengelakkan bersarang apabila menggunakannya.

Ageneratorinphpisamemory-efficientwaytoiterateOverlargedatasetsbyieldingvaluesonateatimeNsteadofreturningthemallatonce.1.GeneratorSuseTheyEldeyWorderWorderToProducevaluuesondemand,

Kunci untuk menulis komen PHP adalah untuk menjelaskan tujuan dan spesifikasi. Komen harus menjelaskan "mengapa" dan bukannya "apa yang dilakukan", mengelakkan redundansi atau terlalu kesederhanaan. 1. Gunakan format bersatu, seperti docblock (/*/) untuk deskripsi kelas dan kaedah untuk meningkatkan keserasian dan keserasian alat; 2. Menekankan sebab -sebab di sebalik logik, seperti mengapa JS melompat perlu dikeluarkan secara manual; 3. Tambahkan gambaran keseluruhan gambaran sebelum kod kompleks, terangkan proses dalam langkah -langkah, dan membantu memahami idea keseluruhan; 4. Gunakan Todo dan Fixme secara rasional untuk menandakan item dan masalah untuk memudahkan penjejakan dan kerjasama berikutnya. Anotasi yang baik dapat mengurangkan kos komunikasi dan meningkatkan kecekapan penyelenggaraan kod.

Dalam PHP, anda boleh menggunakan kurungan persegi atau pendakap keriting untuk mendapatkan aksara indeks spesifik rentetan, tetapi kurungan persegi disyorkan; Indeks bermula dari 0, dan akses di luar julat mengembalikan nilai null dan tidak dapat diberikan nilai; MB_SUBSTR dikehendaki mengendalikan watak multi-bait. Sebagai contoh: $ str = "hello"; echo $ str [0]; output h; dan watak -watak Cina seperti MB_SUBSTR ($ str, 1,1) perlu mendapatkan hasil yang betul; Dalam aplikasi sebenar, panjang rentetan perlu diperiksa sebelum gelung, rentetan dinamik perlu disahkan untuk kesahihan, dan projek berbilang bahasa mengesyorkan menggunakan fungsi keselamatan multi-bait secara seragam.

Toinstallphpquickly, usexampponwindowsorhomeBrewonmacos.1.onwindows, downloadandInstallxampp, selectcomponents, startapache, andplaceFilesinhtdocs.2.alternative, secara manualstallphpfromphp.netandsheBerver.3

Tolearnphpeffectively, startbysettingupalocalverenvironmentusingToolsLikexamppandaCodeDitorLikevscode.1) InstallXamppforapa Che, MySql, danPhp.2) UseAcodeeditorForsyntaxSupport.3) testyoursetupwithasimplephpfile.next, learnphpbasicsincludingvariables, ech
