PHP PDO kann nicht bekommen OUT-parameter Wert

Ich habe gerade angefangen mit PHP PDO mit MySQL stored procedures und ich habe ein problem mit how to get OUT-Parameter von der Prozedur-Aufruf. Ich sah viele ähnliche stackoverflow Themen, aber leider konnte ich nicht einen Weg finden, zu beheben mein Problem 😐

Hier sind die details:

Dauert die Prozedur 1 input-parameter und hat 2 obligatorische output-Parametern und Ergebnis-status in Ihnen.

Dies ist, wie ich es nennen:

$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();

Gibt die Prozedur INT in der @o_code parameter und STRING in der @o_message parameter.
Wenn es heißt von CLI, und nach dem Aufruf Schreibe ich in der CLI

select @o_code, @o_message;

alles OK ist, ist, dass ich in der Lage bin zu sehen, die Werte, die bei diesen OUT-Parameter.
Aber ich kann es nicht tun, aus PHP - code- aus irgendeinem Grund bekomme ich immer FALSCHE Ergebnisse. Das Verfahren tun, es ist Arbeit richtig, aber ich kann einfach nicht bekommen Ihre Ergebnisse.

Ich habe versucht, die folgenden Methoden, um die Werte, direkt nachdem ich den Anruf oben beschrieben:

$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();

aber keines dieser Rückgabe einem Ergebnis Verschieden von NULL oder FALSE. Ich habe auch versucht mit bindParam, konnte aber immer noch nicht damit es funktioniert.

Danke für jede Hilfe zu diesem Thema und guten Tag!

- - - - - - EDIT - - - - - -

Hier ist der code, den ich versuchte, mit bindParam, die immer noch nicht funktioniert:

$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
Gefunden: stackoverflow.com/a/32224294/2717254
Die Frage, die Sie zeigen sind ist ein anderes problem und es löst nicht das problem, die Frage hier gepostet. Sie können die akzeptierte Antwort unten, um zu sehen, dass das problem der "closeCursor()" aufgerufen werden soll, für die Dinge, um richtig zu arbeiten. Deine Antwort in der anderen Frage hat, die Zeile code, die, so meine Vermutung ist, dass es nicht funktioniert.
Die Antwort ist über die erste Ausgabe param Wert! Die closeCursor () - Aufruf nicht beteiligt. Ich aktualisierte die Antwort zu klären, besser btw

InformationsquelleAutor luben | 2011-06-21

Schreibe einen Kommentar