Maison  >  Article  >  base de données  >  Comment résoudre l'erreur « L'argument OUT ou INOUT… n'est pas une variable » lors de l'appel de procédures stockées avec PDO ?

Comment résoudre l'erreur « L'argument OUT ou INOUT… n'est pas une variable » lors de l'appel de procédures stockées avec PDO ?

Linda Hamilton
Linda Hamiltonoriginal
2024-11-07 00:38:03185parcourir

How to Resolve

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

Cette question explore un problème rencontré lors de la tentative d'appel d'une procédure stockée avec un paramètre de sortie à l'aide de PDO en PHP. Le message d'erreur "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 BEFORE" s'affiche.

Pour résoudre ce problème problème, les étapes suivantes sont suggérées :

  1. Utilisez une requête distincte pour récupérer le paramètre de sortie : Au lieu de lier directement le paramètre de sortie, exécutez une autre requête pour récupérer la valeur du paramètre de sortie après l’exécution de la procédure stockée. Par exemple :
$dbh->query("CALL SomeStoredProcedure($someInParameter1, $someInParameter2, @someOutParameter)");
$dbh->query("SELECT @someOutParameter");
  1. Insérez "SELECT @someOutParameter" dans la procédure stockée : Vous pouvez également insérer "SELECT @someOutParameter" dans la procédure stockée, puis lier le résultat au paramètre de sortie à l'aide d'instructions préparées. Par exemple :
$stmt = $dbh->prepare("CALL SomeStoredProcedure(?, ?)");
$stmt ->execute(array($someInParameter1, $someInParameter2));

En implémentant ces solutions, l'erreur liée au paramètre de sortie dans la procédure stockée devrait être résolue.

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