Maison >base de données >tutoriel mysql >Comment puis-je exécuter plusieurs requêtes dans une seule instruction PDO avec PDO_MYSQL ou PDO_MYSQLND ?

Comment puis-je exécuter plusieurs requêtes dans une seule instruction PDO avec PDO_MYSQL ou PDO_MYSQLND ?

DDD
DDDoriginal
2024-12-17 18:20:11428parcourir

How Can I Execute Multiple Queries in a Single PDO Statement with PDO_MYSQL or PDO_MYSQLND?

Prise en charge de plusieurs requêtes dans PDO avec PDO_MYSQL et PDO_MYSQLND

Bien que PDO n'autorise généralement pas plusieurs requêtes dans une seule instruction, certaines extensions offrent cette fonctionnalité :

PDO_MYSQLND

PDO_MYSQLND remplacé PDO_MYSQL en PHP 5.3. Il sert de pilote par défaut pour MySQL PDO. Cette extension prend en charge l'exécution de plusieurs requêtes simultanément, à condition que les conditions suivantes soient remplies :

  • PHP 5.3 ou version ultérieure
  • mysqlnd
  • Instructions préparées émulées activées (PDO::ATTR_EMULATE_PREPARES défini sur 1, qui est la valeur par défaut pour MySQL)

Utilisation d'exec

Pour les requêtes simples avec des valeurs constantes, vous pouvez utiliser la méthode exec() :

$db = new PDO(...);
$db->setAttribute(PDO::ATTR_EMULATE_PREPARES, 0);

$sql = "...";
$db->exec($sql);

Utilisation des instructions

Pour les requêtes avec des données variables, utilisez préparées déclarations :

$db = new PDO(...);
$db->setAttribute(PDO::ATTR_EMULATE_PREPARES, 1);

$sql = "...";
$stmt = $db->prepare($sql);
$stmt->execute([...]);

N'oubliez pas de parcourir les résultats de la requête pour vérifier les erreurs ou collecter des données.

Remarque sur l'encodage

Lorsque vous utilisez des instructions préparées émulées, assurez-vous que les instructions sont correctes. l'encodage est spécifié dans le DSN (disponible dans PHP 5.3.6 et versions ultérieures). Un codage incorrect peut introduire un risque mineur d'injection SQL avec des jeux de caractères inhabituels.

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!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn