Rumah >pembangunan bahagian belakang >tutorial php >Bagaimanakah Saya Boleh Melaksanakan Berbilang Pertanyaan dalam Pernyataan PDO Tunggal dengan PDO_MYSQL dan PDO_MYSQLND?
Walaupun PDO lazimnya tidak membenarkan berbilang pertanyaan dalam satu pernyataan, sambungan PDO_MYSQL dan PDO_MYSQLND menyediakan sokongan untuk this kefungsian.
PDO_MYSQLND sejak itu telah menggantikan PDO_MYSQL dalam PHP 5.3, dengan PDO_MYSQL kekal sebagai pemacu lalai untuk MySQL PDO. Untuk melaksanakan berbilang pertanyaan dengan PDO, keperluan berikut mesti dipenuhi:
Kaedah exec() boleh melaksanakan berbilang pertanyaan apabila:
$db = new PDO("mysql:host=localhost;dbname=test;charset=utf8mb4", 'root', ''); $db->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION); $db->setAttribute(PDO::ATTR_EMULATE_PREPARES, 0); $sql = "DELETE FROM car; INSERT INTO car(name, type) VALUES ('car1', 'coupe'); INSERT INTO car(name, type) VALUES ('car2', 'coupe');"; $db->exec($sql);
Kaedah ini terhad kepada melaksanakan pernyataan SQL dengan nilai malar.
Apabila data diperoleh daripada pembolehubah PHP, pernyataan yang disediakan mesti digunakan:
$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"]); while ($stmt->nextRowset()) { echo $db->lastInsertId(); // as an example }
Pendekatan ini membenarkan semakan ralat dan pengumpulan hasil pertanyaan melalui lelaran ke atas set baris.
Apabila menggunakan kenyataan yang disediakan yang dicontohi, pastikan pengekodan dalam DSN (tersedia sejak PHP 5.3.6) sepadan dengan pengekodan data sebenar. Jika tidak, mungkin terdapat potensi untuk suntikan SQL dengan pengekodan tertentu.
Atas ialah kandungan terperinci Bagaimanakah Saya Boleh Melaksanakan Berbilang Pertanyaan dalam Pernyataan PDO Tunggal dengan PDO_MYSQL dan PDO_MYSQLND?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!