„Wenn ein Arbeiter seine Arbeit gut machen will, muss er zuerst seine Werkzeuge schärfen.“ – Konfuzius, „Die Gespräche des Konfuzius. Lu Linggong“
Titelseite > Programmierung > 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?

Veröffentlicht am 18.11.2024
Durchsuche:438

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

Obwohl der bereitgestellte PHP-Code PDO verwendet Bei Bindungen kann die Ausgabevariable LAST_INSERT_ID() aus der gespeicherten Prozedur simpleProcedure nicht erfasst werden.

Erläuterung

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 zu MySQL-Benutzervariablen.
  2. Abfragen der MySQL-Benutzervariablen um ihre Werte in PHP-Variablen abzurufen.

Lösung: Zweistufiger Prozess

Stufe 1: Ausführen der Prozedur

$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 übergibt PDO nicht nur die PHP-Variable an die Prozedur, sondern aktualisiert sie 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 @returnid ab, um ihren 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.

Neuestes Tutorial Mehr>

Haftungsausschluss: Alle bereitgestellten Ressourcen stammen teilweise aus dem Internet. Wenn eine Verletzung Ihres Urheberrechts oder anderer Rechte und Interessen vorliegt, erläutern Sie bitte die detaillierten Gründe und legen Sie einen Nachweis des Urheberrechts oder Ihrer Rechte und Interessen vor und senden Sie ihn dann an die E-Mail-Adresse: [email protected] Wir werden die Angelegenheit so schnell wie möglich für Sie erledigen.

Copyright© 2022 湘ICP备2022001581号-3