cari

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

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.

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.

$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

Kaedah

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

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

Mempunyai

Kaedah

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

// 选择前十个结果...
    $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!

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
Bagaimanakah PHP mengenal pasti sesi pengguna?Bagaimanakah PHP mengenal pasti sesi pengguna?May 01, 2025 am 12:23 AM

Phpidentifierauser'sSessionusingSessionCookiesandSessionIds.1) whensession_start () ISCALLED, phpGeneratesAuniquesessionIdstoredinacookienamedPhpsessidontheUserer'sBrowser.2) ThisIdallowsPhptoretRievesSessionDataFromtheserver.

Apakah beberapa amalan terbaik untuk mendapatkan sesi PHP?Apakah beberapa amalan terbaik untuk mendapatkan sesi PHP?May 01, 2025 am 12:22 AM

Keselamatan sesi PHP boleh dicapai melalui langkah -langkah berikut: 1. Gunakan session_regenerate_id () untuk menjana semula ID sesi apabila pengguna log masuk atau merupakan operasi penting. 2. Sulitkan ID sesi penghantaran melalui protokol HTTPS. 3. Gunakan session_save_path () untuk menentukan direktori selamat untuk menyimpan data sesi dan menetapkan kebenaran dengan betul.

Di manakah fail sesi php disimpan secara lalai?Di manakah fail sesi php disimpan secara lalai?May 01, 2025 am 12:15 AM

PhpsessionFileSarestoredIntHedirectorySpecifiedBySession.save_path, biasanya/tmponunix-likesystemsorc: \ windows \ temponwindows.tocustomethis: 1) usession_save_path ()

Bagaimana anda mengambil data dari sesi PHP?Bagaimana anda mengambil data dari sesi PHP?May 01, 2025 am 12:11 AM

ToretrievedataFromaphpsession, startTheSessionWithSsion_start () andaccessVariablesInthe $ _SessionArray.Forexample: 1) startTheSession: session_start ()

Bagaimana anda boleh menggunakan sesi untuk melaksanakan keranjang belanja?Bagaimana anda boleh menggunakan sesi untuk melaksanakan keranjang belanja?May 01, 2025 am 12:10 AM

Langkah -langkah untuk membina sistem keranjang belanja yang cekap menggunakan sesi termasuk: 1) Memahami definisi dan fungsi sesi. Sesi ini adalah mekanisme penyimpanan sisi pelayan yang digunakan untuk mengekalkan status pengguna merentasi permintaan; 2) melaksanakan pengurusan sesi asas, seperti menambah produk ke keranjang belanja; 3) memperluas penggunaan lanjutan, menyokong pengurusan kuantiti produk dan penghapusan; 4) Mengoptimumkan prestasi dan keselamatan, dengan berterusan data sesi dan menggunakan pengecam sesi yang selamat.

Bagaimana anda membuat dan menggunakan antara muka dalam PHP?Bagaimana anda membuat dan menggunakan antara muka dalam PHP?Apr 30, 2025 pm 03:40 PM

Artikel ini menerangkan cara membuat, melaksanakan, dan menggunakan antara muka dalam PHP, memberi tumpuan kepada manfaat mereka untuk organisasi kod dan penyelenggaraan.

Apakah perbezaan antara crypt () dan password_hash ()?Apakah perbezaan antara crypt () dan password_hash ()?Apr 30, 2025 pm 03:39 PM

Artikel ini membincangkan perbezaan antara crypt () dan password_hash () dalam php untuk hashing kata laluan, memberi tumpuan kepada pelaksanaan, keselamatan, dan kesesuaian untuk aplikasi web moden.

Bagaimanakah anda dapat mencegah skrip lintas tapak (XSS) dalam PHP?Bagaimanakah anda dapat mencegah skrip lintas tapak (XSS) dalam PHP?Apr 30, 2025 pm 03:38 PM

Artikel membincangkan mencegah skrip lintas tapak (XSS) dalam PHP melalui pengesahan input, pengekodan output, dan menggunakan alat seperti OWASP ESAPI dan pembersih HTML.

See all articles

Alat AI Hot

Undresser.AI Undress

Undresser.AI Undress

Apl berkuasa AI untuk mencipta foto bogel yang realistik

AI Clothes Remover

AI Clothes Remover

Alat AI dalam talian untuk mengeluarkan pakaian daripada foto.

Undress AI Tool

Undress AI Tool

Gambar buka pakaian secara percuma

Clothoff.io

Clothoff.io

Penyingkiran pakaian AI

Video Face Swap

Video Face Swap

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

Alat panas

MinGW - GNU Minimalis untuk Windows

MinGW - GNU Minimalis untuk Windows

Projek ini dalam proses untuk dipindahkan ke osdn.net/projects/mingw, anda boleh terus mengikuti kami di sana. MinGW: Port Windows asli bagi GNU Compiler Collection (GCC), perpustakaan import yang boleh diedarkan secara bebas dan fail pengepala untuk membina aplikasi Windows asli termasuk sambungan kepada masa jalan MSVC untuk menyokong fungsi C99. Semua perisian MinGW boleh dijalankan pada platform Windows 64-bit.

Penyesuai Pelayan SAP NetWeaver untuk Eclipse

Penyesuai Pelayan SAP NetWeaver untuk Eclipse

Integrasikan Eclipse dengan pelayan aplikasi SAP NetWeaver.

SublimeText3 versi Cina

SublimeText3 versi Cina

Versi Cina, sangat mudah digunakan

Notepad++7.3.1

Notepad++7.3.1

Editor kod yang mudah digunakan dan percuma

Dreamweaver Mac版

Dreamweaver Mac版

Alat pembangunan web visual