Maison > base de données > tutoriel mysql > 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
Libérer: 2024-11-07 05:21:03
original
306 Les gens l'ont consulté

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 //  
Copier après la connexion
  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();
Copier après la connexion
  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'];
}
Copier après la connexion

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!

source:php.cn
Déclaration de ce site Web
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
Derniers articles par auteur
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal