Heim  >  Artikel  >  Datenbank  >  Warum wirft PDO „OUT- oder INOUT-Argument ... ist keine Variable' aus, wenn gespeicherte Prozeduren mit Out-Parametern aufgerufen werden?

Warum wirft PDO „OUT- oder INOUT-Argument ... ist keine Variable' aus, wenn gespeicherte Prozeduren mit Out-Parametern aufgerufen werden?

Patricia Arquette
Patricia ArquetteOriginal
2024-11-08 06:58:021051Durchsuche

Why Does PDO Throw

Verwenden von PDO zum Aufrufen gespeicherter Prozeduren mit Out-Parametern

Das Aufrufen gespeicherter Prozeduren mithilfe von PDO kann ein nahtloser Prozess sein; Beim Versuch, gespeicherte Prozeduren ohne Parameter zu verwenden, kann jedoch ein rätselhafter Fehler auftreten:

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

Die Lösung: Eine PDO-Besonderheit

Eintauchen in die Tiefen von Das PDO-Handbuch und die begleitenden Diskussionen enthüllen eine Anomalie innerhalb der vorbereiteten Kontoauszugsfunktionalität von PDO. Der Kern des Problems liegt in der Handhabung unserer Parameter innerhalb gespeicherter Prozeduren.

Um dieses Problem zu beheben, ist eine spezifische Problemumgehung erforderlich:

$stmt = $db->prepare("CALL SomeStoredProcedure(?, ?)"); 
$stmt->execute(array($someInParameter1, $someInParameter2));

Alternativer Ansatz

Eine weitere Option besteht darin, die gespeicherte Prozedur so zu ändern, dass sie eine SELECT-Anweisung enthält, die den Out-Parameter nach der gespeicherten Prozedur abruft Ausführung:

CALL SomeStoredProcedure($someInParameter1, $someInParameter2, @someOutParameter); 
SELECT @someOutParameter;

Dieser modifizierte Ansatz ahmt das Verhalten nach, das beim direkten Aufruf der gespeicherten Prozedur in MySQL beobachtet wird.

Durch die Übernahme dieser Problemumgehungen wird der rätselhafte Fehler behoben, der mit dem Aufruf gespeicherter Prozeduren ohne Verwendung von Parametern verbunden ist PDO wird aufgelöst, was eine nahtlose Ausführung und den Abruf unserer Parameterwerte ermöglicht.

Das obige ist der detaillierte Inhalt vonWarum wirft PDO „OUT- oder INOUT-Argument ... ist keine Variable' aus, wenn gespeicherte Prozeduren mit Out-Parametern aufgerufen werden?. 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