Heim  >  Artikel  >  Datenbank  >  Wie rufe ich Ausgabevariablen aus gespeicherten MySQL-Prozeduren in PHP mit PDO ab?

Wie rufe ich Ausgabevariablen aus gespeicherten MySQL-Prozeduren in PHP mit PDO ab?

Linda Hamilton
Linda HamiltonOriginal
2024-11-06 09:57:02245Durchsuche

How to Retrieve Output Variables from MySQL Stored Procedures in PHP with PDO?

Abrufen von Ausgabevariablen gespeicherter Prozeduren in PHP mit PDO

Ziel: Rufen Sie den Wert LAST_INSERT_ID() aus einer gespeicherten MySQL-Prozedur ab und weisen Sie ihn zu eine PHP-Variable.

Problemstellung

Trotz des bereitgestellten PHP-Codes Bei Verwendung von PDO-Bindungen kann die Ausgabevariable LAST_INSERT_ID() aus der gespeicherten Prozedur simpleProcedure nicht erfasst werden.

Erklärung

Das Abrufen von Ausgabevariablen aus gespeicherten MySQL-Prozeduren in PHP PDO umfasst einen zweistufigen Prozess:

  1. Ausführen der gespeicherten Prozedur und Zuweisen von Ausgabevariablen zum MySQL-Benutzer Variablen.
  2. Abfragen der MySQL-Benutzervariablen, um ihre Werte in PHP-Variablen abzurufen.

Lösung: Zweistufiger Prozess

Stufe 1: Ausführen der Vorgehensweise

$stmt = $db->prepare("CALL simpleProcedure(:name, @returnid)");
$stmt->bindValue(':name', $name, PDO::PARAM_STR);
$stmt->bindParam(':returnid', $returnid, PDO::PARAM_INT, 11, PDO::PARAM_INOUT);  // Note the PDO::PARAM_INOUT
$stmt->execute();

Durch die Bindung des :returnid-Platzhalters als INOUT wird PDO nicht nur übergeben Fügen Sie der Prozedur die PHP-Variable hinzu, aktualisieren Sie sie aber auch mit dem Wert der Ausgabevariablen.

Stufe 2: Abrufen der Ausgabevariablen

$sql = "SELECT @returnid AS output_id";
$result = $db->query($sql)->fetch(PDO::FETCH_ASSOC);

$lastInsertId = $result['output_id'];

Fragen Sie die MySQL-Benutzervariable @ ab. returnid, um seinen Wert der PHP-Variablen $lastInsertId zuzuweisen.

Hinweis

Bindung von PHP Beim Verknüpfen von Variablen mit INOUT- und OUT-Parametern für MySQL-Prozeduren kann es zu Laufzeitfehlern kommen. Es wird empfohlen, Variablen nur an IN-Parameter zu binden.

Das obige ist der detaillierte Inhalt vonWie rufe ich Ausgabevariablen aus gespeicherten MySQL-Prozeduren in PHP mit PDO ab?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn