PHP PDO ne peut pas SORTIR de valeur de paramètre

J'ai juste commencé à l'aide de PHP PDO avec MySQL procédures stockées et j'ai un problème avec la façon de SORTIR des paramètres de l'appel de procédure. J'ai regardé beaucoup de semblables stackoverflow sujets, mais malheureusement je ne pouvais pas trouver un moyen de résoudre mon problème 😐

Voici les détails:

La procédure prend 1 paramètre d'entrée et a 2 obligatoire des paramètres de sortie, et renvoie le résultat d'état.

C'est comment je l'appelle:

$input = 5;
$mydb = new PDO("mysql:host=localhost;dbname=mydb", "user", "pass");
$proc = $mydb->prepare("CALL proc_name($input, @o_code, @o_message)");
$proc->execute();

La procédure retourne un INT dans le @o_code paramètre et de la CHAÎNE dans l' @o_message paramètre.
Si il est appelé à partir de la CLI, et après l'appel que j'ai à écrire dans la CLI

select @o_code, @o_message;

tout est OK, c'est que je suis capable de voir les valeurs renvoyées dans ces paramètres.
Cependant je ne peux pas le faire à partir du code PHP - pour une raison quelconque, j'ai toujours obtenir des résultats FAUX. La procédure ne c'est du boulot correctement, mais j'ai juste ne peut pas obtenir ses résultats.

J'ai essayé les méthodes suivantes pour obtenir les valeurs, juste après que j'ai fais l'appel décrit ci-dessus:

$output = $proc->fetch(PDO::FETCH_ASSOC); //also with PDO:FETCH_OBJ
$output = $mydb->query("select @o_code, @o_message");
$output = $mydb->query("select @o_code, @o_message")->fetch();
$output = $mydb->query("select @o_code, @o_message")->fetchColumn(); 
$output = $mydb->query("select @o_code, @o_message")->fetchAll();

mais aucun de ces retourne aucun résultat différent de NULL ou FALSE. J'ai aussi essayé avec bindParam, mais ne peut toujours pas le faire fonctionner.

Merci pour toute aide sur ce problème et bonne journée!

----- EDIT -----

Voici le code que j'ai essayé avec bindParam, qui ne fonctionne toujours pas:

$input = 5;
$proc = $mydb->prepare("CALL proc_name(?, ?, ?)");
$proc->bindParam(1, $input, PDO::PARAM_INT); 
$proc->bindParam(2, $code, PDO::PARAM_INT); 
$proc->bindParam(3, $message, PDO::PARAM_STR);
$proc->execute();

var_dump($code, $message); //NULL, NULL
Trouvé ça: stackoverflow.com/a/32224294/2717254
La question que vous vous êtes vous indiquer, c'est un autre problème et il ne permet pas de résoudre le problème de la question posté ici. Vous pouvez vérifier la accepté de répondre ci-dessous pour voir que le problème est le "closeCursor()" doit être appelé pour que les choses fonctionnent correctement. Votre réponse dans l'autre quesion n'ont qu'une ligne de code, donc je pense qu'il ne fonctionnera pas non plus.
La réponse est sur l'obtention de la sortie param valeur! Le closeCursor() l'appel n'est pas impliqué. J'ai mis à jour la réponse à mieux clarifier btw

OriginalL'auteur luben | 2011-06-21