Heim  >  Artikel  >  Datenbank  >  Wie behebt man den Fehler „OUT- oder INOUT-Argument ... ist keine Variable“ beim Aufrufen gespeicherter Prozeduren mit PDO?

Wie behebt man den Fehler „OUT- oder INOUT-Argument ... ist keine Variable“ beim Aufrufen gespeicherter Prozeduren mit PDO?

Susan Sarandon
Susan SarandonOriginal
2024-11-07 05:21:03208Durchsuche

How to Fix

Aufrufen einer gespeicherten Prozedur mit Out-Parameter mithilfe von PDO: Fehler behoben

Obwohl Sie das PDO-Handbuch befolgt haben, kann es vorkommen, dass Sie auf ein „OUT“- oder „INOUT“-Argument stoßen „...ist keine Variable“-Fehler beim Aufrufen einer gespeicherten Prozedur mit einem Ausgabeparameter. Dies ist wahrscheinlich auf einen Fehler in früheren Versionen von PHP und MySQL zurückzuführen.

Um dieses Problem zu beheben, implementieren Sie die folgende Problemumgehung:

  1. Fügen Sie in der gespeicherten Prozedur ein hinzu SELECT-Anweisung für den Ausgabeparameter. Zum Beispiel:
DELIMITER //  
CREATE PROCEDURE `proc_OUT` (OUT var1 VARCHAR(100))  
BEGIN  
    SET var1 = 'This is a test';  
    SELECT var1;  -- Select added to retrieve the output parameter
END //  
  1. Verwenden Sie in Ihrem PHP-Code die normale PDO-Methode execute(), um die gespeicherte Prozedur aufzurufen, ohne den Ausgabeparameter zu binden:
$stmt = $db->prepare("CALL proc_OUT(?)");
$stmt->bindParam(1, $return_value, PDO::PARAM_STR, 4000);
$stmt->execute();
  1. Nachdem Sie die gespeicherte Prozedur ausgeführt haben, rufen Sie den Ausgabeparameter mit einem separaten query()-Aufruf ab:
$result = $db->query("SELECT var1 FROM proc_OUT");
foreach ($result as $row) {
    echo $row['var1'];
}

Das obige ist der detaillierte Inhalt vonWie behebt man den Fehler „OUT- oder INOUT-Argument ... ist keine Variable“ beim Aufrufen gespeicherter Prozeduren mit PDO?. 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