Ziel: Rufen Sie den Wert LAST_INSERT_ID() aus einer gespeicherten MySQL-Prozedur ab und weisen Sie ihn zu eine PHP-Variable.
Obwohl der bereitgestellte PHP-Code PDO verwendet Bei 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 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.
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.
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