Prise en charge de PDO pour plusieurs requêtes : PDO_MYSQL et PDO_MYSQLND
Le PDO traditionnel ne prend pas en charge nativement l'exécution de plusieurs requêtes dans une seule instruction. Cependant, PDO_MYSQL et PDO_MYSQLND ont été développés pour résoudre cette limitation.
PDO_MYSQL et PDO_MYSQLND
PDO_MYSQL est désormais considéré comme obsolète. En fait, depuis PHP 5.3, MySQL PDO utilise le pilote PDO_MYSQLND par défaut.
Exécuter plusieurs requêtes avec PDO
Pour exécuter plusieurs requêtes avec PDO, vous avez besoin ce qui suit :
Utilisation d'exec
Pour les requêtes SQL avec des valeurs constantes, la méthode exec() peut être utilisé :
$db->exec(" DELETE FROM car; INSERT INTO car(name, type) VALUES ('car1', 'coupe'); INSERT INTO car(name, type) VALUES ('car2', 'coupe'); ");
Utilisation d'instructions préparées
Pour les requêtes avec des données de variables PHP, des instructions préparées sont nécessaires :
$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(); }
Remarque que dans les deux cas, il est essentiel de définir PDO::ATTR_EMULATE_PREPARES à 1 lors de l'utilisation de plusieurs requêtes.
Remarque sur le codage
Lorsque vous utilisez des instructions préparées émulées, assurez-vous de spécifier le codage correct 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!