„Wenn ein Arbeiter seine Arbeit gut machen will, muss er zuerst seine Werkzeuge schärfen.“ – Konfuzius, „Die Gespräche des Konfuzius. Lu Linggong“
Titelseite > Programmierung > 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?

Veröffentlicht am 10.11.2024
Durchsuche:390

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; Wenn Sie jedoch versuchen, gespeicherte Prozeduren ohne Parameter zu verwenden, kann 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

Ein Blick in die Tiefe des PDO-Handbuchs und der begleitenden Diskussionen deckt eine Anomalie innerhalb der vorbereiteten PDOs auf Anweisungsfunktionalität. Der Kern des Problems liegt in der Handhabung von Out-Parametern innerhalb gespeicherter Prozeduren.

Um dieses Problem zu beheben, ist eine spezielle 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 abruft der Out-Parameter nach der Ausführung der gespeicherten Prozedur:

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 Out-Parameter mithilfe von PDO verbunden ist löst sich auf und ermöglicht eine nahtlose Ausführung und den Abruf unserer Parameterwerte.

Neuestes Tutorial Mehr>

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