Malgré la perception selon laquelle PDO ne prend pas en charge plusieurs requêtes dans une seule instruction, PDO_MYSQL et PDO_MYSQLND fournissent cette fonctionnalité.
PDO_MYSQL a été remplacé par PDO_MYSQLND dans PHP 5.3. De manière déroutante, le nom reste PDO_MYSQL, mais PDO_MYSQLND est le pilote par défaut pour MySQL PDO.
Pour exécuter plusieurs requêtes simultanément, les conditions suivantes doivent être remplies :
Utilisation 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);
Utilisation des instructions :
$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());
Remarque : Lorsque vous utilisez des instructions préparées émulées, définissez l'encodage approprié dans le DSN pour éviter les vulnérabilités potentielles d'injection SQL.
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!