Heim > Datenbank > MySQL-Tutorial > Hauptteil

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

Patricia Arquette
Freigeben: 2024-11-08 06:58:02
Original
1050 Leute haben es durchsucht

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
Nach dem Login kopieren

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));
Nach dem Login kopieren

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;
Nach dem Login kopieren

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!

Quelle:php.cn
Erklärung dieser Website
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
Neueste Artikel des Autors
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage