Walaupun terdapat persepsi bahawa PDO tidak menyokong berbilang pertanyaan dalam satu pernyataan, PDO_MYSQL dan PDO_MYSQLND menyediakan fungsi ini.
PDO_MYSQL telah digantikan oleh PDO_MYSQLND dalam PHP 5.3. Mengelirukan, nama itu kekal PDO_MYSQL, tetapi PDO_MYSQLND ialah pemacu lalai untuk MySQL PDO.
Untuk melaksanakan berbilang pertanyaan serentak, keperluan berikut mesti dipenuhi:
Menggunakan exec:
$db = new PDO("mysql:host=localhost;dbname=test;charset=utf8mb4", 'root', ''); $db->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION); $sql = "DELETE FROM car; INSERT INTO car(name, type) VALUES ('car1', 'coupe'); INSERT INTO car(name, type) VALUES ('car2', 'coupe');"; $db->exec($sql);
Menggunakan pernyataan:
$db = new PDO("mysql:host=localhost;dbname=test;charset=utf8mb4", 'root', ''); $db->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION); $sql = "DELETE FROM car; INSERT INTO car(name, type) VALUES (:car1, :type1); INSERT INTO car(name, type) VALUES (:car2, :type2);"; $stmt = $db->prepare($sql); $stmt->execute(["car1" => "brand1", "type1" => "coupe", "car2" => "brand2", "type2" => "coupe"]); // Check for errors and collect query results do { echo $pdo->lastInsertId(); // for example } while ($stmt->nextRowset());
Nota: Apabila menggunakan pernyataan yang disediakan yang dicontohi, tetapkan pengekodan yang sesuai dalam DSN untuk mengelakkan potensi kelemahan suntikan SQL.
Atas ialah kandungan terperinci Bolehkah PDO_MYSQL dan PDO_MYSQLND Melaksanakan Berbilang Pertanyaan SQL dalam Satu Penyata?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!