Ziel: Rufen Sie den Wert LAST_INSERT_ID() aus einer gespeicherten MySQL-Prozedur ab und weisen Sie ihn zu eine PHP-Variable.
Trotz des bereitgestellten PHP-Codes Bei Verwendung von PDO-Bindungen kann die Ausgabevariable LAST_INSERT_ID() aus der gespeicherten Prozedur simpleProcedure nicht erfasst werden.
Das Abrufen von Ausgabevariablen aus gespeicherten MySQL-Prozeduren in PHP PDO umfasst einen zweistufigen 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.
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!