Maison  >  Article  >  base de données  >  Comment appeler des procédures stockées avec des paramètres de sortie à l'aide de PDO lorsque vous rencontrez un bug connu ?

Comment appeler des procédures stockées avec des paramètres de sortie à l'aide de PDO lorsque vous rencontrez un bug connu ?

Linda Hamilton
Linda Hamiltonoriginal
2024-11-07 15:53:03733parcourir

How to Call Stored Procedures with Output Parameters Using PDO When Encountering a Known Bug?

Appel d'une procédure stockée avec un paramètre de sortie à l'aide de PDO

Lorsque vous tentez d'exécuter une procédure stockée avec un paramètre de sortie à l'aide de PDO, il est essentiel de considérer un bug connu. Ce bug peut conduire à l'erreur suivante, malgré le fonctionnement normal de la procédure lorsqu'elle est appelée directement depuis MySQL :

"SQLSTATE[42000] : Erreur de syntaxe ou violation d'accès : 1414 OUT ou INOUT argument 1 pour la routine mydb.proc_OUT n'est pas une variable ou une NOUVELLE pseudo-variable dans le déclencheur AVANT"

Pour résoudre ce problème, il est recommandé d'exécuter la procédure stockée en utilisant l'approche suivante :

  1. Appeler la procédure stockée et sélectionnez le paramètre de sortie :
$dbh->query("CALL SomeStoredProcedure($someInParameter1, $someInParameter2, @someOutParameter)");
$dbh->query("SELECT @someOutParameter");
  1. Préparez l'instruction et sélectionnez le paramètre de sortie :
$stmt = $dbh->prepare("CALL SomeStoredProcedure(?, ?)");
$stmt->execute(array($someInParameter1, $someInParameter2));

En suivant cette approche, vous pouvez appeler efficacement des procédures stockées avec des paramètres de sortie à l'aide de PDO, même en présence du bug susmentionné.

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