Gespeicherte Prozeduren mit OUT-Parametern mithilfe von PDO aufrufen
In der Datenbankprogrammierung sind gespeicherte Prozeduren für die Kapselung komplexer Datenbankoperationen unerlässlich. Das Abrufen der Ausgabe von gespeicherten Prozeduren mithilfe von PDO kann eine Herausforderung sein.
Problem:
Beim Aufrufen einer gespeicherten Prozedur mit einem OUT-Parameter mithilfe von PDO kann ein Fehler wie der folgende auftreten:
PDOException: SQLSTATE[42000]: Syntax error or access violation: 1414 OUT or INOUT argument 1 for routine mydb.proc_OUT is not a variable or NEW pseudo-variable in BEFORE trigger
Lösung:
PDO erwartet, dass OUT-Parameter über eine separate Abfrage abgerufen werden. Die folgenden Schritte beschreiben die richtige Vorgehensweise:
Bereiten Sie die PDO-Anweisung vor:
$stmt = $db->prepare("CALL proc_OUT(?)");
Binden der OUT-Parameter:
$stmt->bindParam(1, $return_value, PDO::PARAM_STR, 4000);
Führen Sie die gespeicherte Prozedur aus:
$stmt->execute();
Fragen Sie den OUT-Parameter ab:
$stmt2 = $db->query("SELECT @return_value"); $row = $stmt2->fetch(PDO::FETCH_NUM); $return_value = $row[0];
Beispiel:
Hier ist ein Beispiel für den Aufruf einer gespeicherten Prozedur mit einem OUT-Parameter:
$db = new PDO("mysql:host=localhost;dbname=mydb", "username", "password"); // Stored procedure definition $sql = "CREATE PROCEDURE proc_OUT (OUT var1 VARCHAR(100)) BEGIN SET var1 = 'This is a test'; END"; $db->query($sql); // Call the stored procedure $stmt = $db->prepare("CALL proc_OUT(?)"); $stmt->bindParam(1, $return_value, PDO::PARAM_STR, 4000); $stmt->execute(); // Query the OUT parameter $stmt2 = $db->query("SELECT @return_value"); $row = $stmt2->fetch(PDO::FETCH_NUM); $return_value = $row[0]; echo $return_value; // Output: 'This is a test'
Wenn Sie diesem Ansatz folgen, können Sie gespeicherte Prozeduren mit OUT-Parametern mithilfe von PDO erfolgreich aufrufen.
Das obige ist der detaillierte Inhalt vonWie rufe ich mithilfe von PDO die Ausgabe gespeicherter Prozeduren mit OUT-Parametern ab?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!