Sokongan PDO untuk Berbilang Pertanyaan: PDO_MYSQL dan PDO_MYSQLND
PDO tradisional tidak menyokong pelaksanaan berbilang pertanyaan dalam satu pernyataan. Walau bagaimanapun, PDO_MYSQL dan PDO_MYSQLND telah dibangunkan untuk menangani had ini.
PDO_MYSQL dan PDO_MYSQLND
PDO_MYSQL kini dianggap tidak digunakan lagi. Malah, sejak PHP 5.3, MySQL PDO telah menggunakan pemacu PDO_MYSQLND secara lalai.
Melaksanakan Berbilang Pertanyaan dengan PDO
Untuk melaksanakan berbilang pertanyaan dengan PDO, anda memerlukan berikut:
Menggunakan exec
Untuk pertanyaan SQL dengan nilai tetap, kaedah exec() boleh digunakan:
$db->exec(" DELETE FROM car; INSERT INTO car(name, type) VALUES ('car1', 'coupe'); INSERT INTO car(name, type) VALUES ('car2', 'coupe'); ");
Menggunakan Penyata Disediakan
Untuk pertanyaan dengan data daripada pembolehubah PHP, pernyataan yang disediakan diperlukan:
$stmt = $db->prepare(" DELETE FROM car; INSERT INTO car(name, type) VALUES (:car1, :type1); INSERT INTO car(name, type) VALUES (:car2, :type2); "); $stmt->execute([ "car1" => "brand1", "type1" => "coupe", "car2" => "brand2", "type2" => "coupe" ]); while ($stmt->nextRowset()) { echo $db->lastInsertId(); }
Perhatikan bahawa dalam kedua-dua kes, adalah penting untuk menetapkan PDO::ATTR_EMULATE_PREPARES kepada 1 apabila menggunakan berbilang pertanyaan.
Nota Pengekodan
Apabila menggunakan pernyataan yang disediakan yang dicontohi, pastikan anda menentukan pengekodan yang betul dalam DSN untuk mengelakkan potensi kelemahan suntikan SQL.
Atas ialah kandungan terperinci Bagaimanakah Saya Boleh Melaksanakan Berbilang Pertanyaan dengan PDO dalam PHP?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!