"If a worker wants to do his job well, he must first sharpen his tools." - Confucius, "The Analects of Confucius. Lu Linggong"
Front page > Programming > Why Does PDO Throw "OUT or INOUT argument ... is not a variable" When Calling Stored Procedures with Out Parameters?

Why Does PDO Throw "OUT or INOUT argument ... is not a variable" When Calling Stored Procedures with Out Parameters?

Published on 2024-11-10
Browse:866

Why Does PDO Throw

Using PDO to Invoke Stored Procedures with Out Parameters

Calling stored procedures using PDO can be a seamless process; however, when attempting to utilize stored procedures with out parameters, an enigmatic error may surface:

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

The Solution: A PDO Peculiarity

Delving into the depths of the PDO manual and its accompanying discussions unravels an anomaly within PDO's prepared statement functionality. The crux of the issue lies in the handling of out parameters within stored procedures.

To rectify this issue, a specific workaround is necessary:

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

Alternative Approach

Another option involves modifying the stored procedure to include a SELECT statement that retrieves the out parameter after the stored procedure execution:

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

This modified approach mimics the behavior observed when directly calling the stored procedure within MySQL.

By embracing these workarounds, the enigmatic error associated with calling stored procedures with out parameters using PDO dissipates, allowing for seamless execution and retrieval of out parameter values.

Latest tutorial More>

Disclaimer: All resources provided are partly from the Internet. If there is any infringement of your copyright or other rights and interests, please explain the detailed reasons and provide proof of copyright or rights and interests and then send it to the email: [email protected] We will handle it for you as soon as possible.

Copyright© 2022 湘ICP备2022001581号-3