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

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

Susan Sarandon
Susan Sarandonoriginal
2024-11-07 05:21:03213parcourir

How to Fix

Appel d'une procédure stockée avec le paramètre Out à l'aide de PDO : bug résolu

Malgré le suivi du manuel PDO, vous pouvez rencontrer un argument "OUT ou INOUT ...n'est pas une variable" erreur lors de l'appel d'une procédure stockée avec un paramètre de sortie. Cela est probablement dû à un bug dans les versions antérieures de PHP et MySQL.

Pour résoudre ce problème, implémentez la solution de contournement suivante :

  1. Dans la procédure stockée, ajoutez un Instruction SELECT pour le paramètre de sortie. Par exemple :
DELIMITER //  
CREATE PROCEDURE `proc_OUT` (OUT var1 VARCHAR(100))  
BEGIN  
    SET var1 = 'This is a test';  
    SELECT var1;  -- Select added to retrieve the output parameter
END //  
  1. Dans votre code PHP, utilisez la méthode PDO normale execute() pour appeler la procédure stockée sans lier le paramètre de sortie :
$stmt = $db->prepare("CALL proc_OUT(?)");
$stmt->bindParam(1, $return_value, PDO::PARAM_STR, 4000);
$stmt->execute();
  1. Après avoir exécuté la procédure stockée, récupérez le paramètre de sortie à l'aide d'un appel query() distinct :
$result = $db->query("SELECT var1 FROM proc_OUT");
foreach ($result as $row) {
    echo $row['var1'];
}

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