Bermula dengan Fluentpdo

William Shakespeare
William Shakespeareasal
2025-02-20 12:34:17596semak imbas

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:

Getting Started with FluentPDO

Berikut adalah dump SQL (termasuk beberapa data dummy):

<code class="language-sql">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);</code>
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:

<code class="language-json">"require": {
        ...
        "lichtner/fluentpdo": "dev-master"  
    }</code>
Apabila anda selesai, anda perlu memberi contoh seperti ini:

<code class="language-sql">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);</code>

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.

<code class="language-json">"require": {
        ...
        "lichtner/fluentpdo": "dev-master"  
    }</code>

tidak ada yang sukar difahami di sini. Fluentpdo mempunyai sintaks yang baik dan mudah dibaca, jadi mudah untuk memahami apa yang kita lakukan.

Kaedah

dari () 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.

<code class="language-php">$pdo = new PDO("mysql:dbname=wishlist", "root", "password");
    $fpdo = new FluentPDO($pdo);</code>

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 ():

<code class="language-php">$user_id = 1;

    $query = $fpdo->from('users')->where('id', $user_id);

    foreach($query as $row){
        echo 'Hello, ' . $row['first_name'] . ' ' . $row['last_name'] . '!';    
    }</code>

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:

<code class="language-php">$fpdo->from('items')->where('price >', 1000);</code>

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.

<code class="language-php">$query = fpdo->from('users', $user_id);

    // 将与...相同
    $query = $fpdo->from('users')->where('id', $user_id);</code>

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

Kaedah

orderBy () digunakan untuk menyusun hasil mengikut keadaan tertentu. Mari memberi contoh: Inilah cara menyusun keputusan dengan harga (dari murah hingga mahal).

<code class="language-php">$query = $fpdo->from('users')->select(array('first_name', 'last_name'))->where('id', $user_id);</code>

Jika anda ingin membalikkan pesanan (dapatkan hasil dari yang paling mahal kepada yang paling murah), tambahkan "DESC" selepas lajur yang dipilih.

<code class="language-php">// 选择前十个结果...
    $query = $fpdo->from('users')->where('id', $user_id)->limit(10)->offset(0);</code>

Mempunyai

Kaedah

mempunyai () mempunyai sintaks yang sangat mudah. Dalam contoh di bawah, kami menapis setiap item yang berharga kurang daripada $ 2,000.

<code class="language-php">$query = $fpdo->from('items')->orderBy('price');</code>

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.

<code class="language-sql">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);</code>

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 ():

<code class="language-json">"require": {
        ...
        "lichtner/fluentpdo": "dev-master"  
    }</code>

Anda juga boleh mendapatkan satu lajur dengan menentukan namanya sebagai parameter.

<code class="language-php">$pdo = new PDO("mysql:dbname=wishlist", "root", "password");
    $fpdo = new FluentPDO($pdo);</code>

FetchPairs

Menggunakan FetchPairs () Anda boleh mengambil keputusan sebagai array bersekutu. Gunakan sintaks berikut:

<code class="language-php">$user_id = 1;

    $query = $fpdo->from('users')->where('id', $user_id);

    foreach($query as $row){
        echo 'Hello, ' . $row['first_name'] . ' ' . $row['last_name'] . '!';    
    }</code>

anda akan mendapat output berikut:

<code class="language-php">$fpdo->from('items')->where('price >', 1000);</code>

Ini adalah contoh menggunakan ID dan nama pengguna yang unik.

<code class="language-php">$query = fpdo->from('users', $user_id);

    // 将与...相同
    $query = $fpdo->from('users')->where('id', $user_id);</code>

Fetchall

yang terakhir tetapi tidak terkecuali adalah kaedah fetchall ().

Berikut adalah sintaks:

<code class="language-php">$query = $fpdo->from('users')->select(array('first_name', 'last_name'))->where('id', $user_id);</code>

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:

<code class="language-php">// 选择前十个结果...
    $query = $fpdo->from('users')->where('id', $user_id)->limit(10)->offset(0);</code>

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

<code class="language-php">$query = $fpdo->from('items')->orderBy('price');</code>
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:

<code class="language-php">$query = $fpdo->from('items')->orderBy('price DESC');</code>

UPDATE

Kaedah kemas kini sangat serupa. Mari kita lihat contoh.

<code class="language-php">$query = $fpdo->from('items')->having('price <', 2000);</code>
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.

<code class="language-php">$query = $fpdo->from('items')->select('brand, COUNT(*) AS c')->groupBy('brand');</code>
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:

<code class="language-php">$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" }</code>
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:

<code class="language-sql">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);</code>

hebat, bukan? Ok, cepat sangat keren ... tetapi bagaimana dengan pintar?

Lihat di sini:

<code class="language-json">"require": {
        ...
        "lichtner/fluentpdo": "dev-master"  
    }</code>

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:

<code class="language-php">$pdo = new PDO("mysql:dbname=wishlist", "root", "password");
    $fpdo = new FluentPDO($pdo);</code>

Ini kelihatan baik.

Sudah tentu, anda boleh membuat alias untuk medan jika anda mahu:

<code class="language-php">$user_id = 1;

    $query = $fpdo->from('users')->where('id', $user_id);

    foreach($query as $row){
        echo 'Hello, ' . $row['first_name'] . ' ' . $row['last_name'] . '!';    
    }</code>

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.

<code class="language-php">$fpdo->from('items')->where('price >', 1000);</code>

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:

<code class="language-php">$query = fpdo->from('users', $user_id);

    // 将与...相同
    $query = $fpdo->from('users')->where('id', $user_id);</code>

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:

<code class="language-php">$query = $fpdo->from('users')->select(array('first_name', 'last_name'))->where('id', $user_id);</code>

bagaimana untuk melaksanakan pertanyaan sisipan menggunakan fluentpdo?

3 Berikut adalah contoh:

<code class="language-sql">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);</code>

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:

<code class="language-json">"require": {
        ...
        "lichtner/fluentpdo": "dev-master"  
    }</code>

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:

<code class="language-php">$pdo = new PDO("mysql:dbname=wishlist", "root", "password");
    $fpdo = new FluentPDO($pdo);</code>

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:

<code class="language-php">$user_id = 1;

    $query = $fpdo->from('users')->where('id', $user_id);

    foreach($query as $row){
        echo 'Hello, ' . $row['first_name'] . ' ' . $row['last_name'] . '!';    
    }</code>

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:

<code class="language-php">$fpdo->from('items')->where('price >', 1000);</code>

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:

<code class="language-php">$query = fpdo->from('users', $user_id);

    // 将与...相同
    $query = $fpdo->from('users')->where('id', $user_id);</code>

Atas ialah kandungan terperinci Bermula dengan Fluentpdo. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan:
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn