使用PDO 呼叫帶輸出參數的存儲過程
使用PDO 調用存儲過程可以是一個無縫的過程;但是,當嘗試使用不帶out 參數的預存程序時,可能會出現一個神秘的錯誤:
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
解決方案:PDO特殊性
深入研究PDO 手冊及其附帶的討論,揭示了PDO 準備好的語句功能中的異常情況。問題的癥結在於預存過程中 out 參數的處理。
要修正此問題,需要特定的解決方法:
$stmt = $db->prepare("CALL SomeStoredProcedure(?, ?)"); $stmt->execute(array($someInParameter1, $someInParameter2));
替代方法
另一個選項涉及修改預存程序以包含檢索的SELECT 語句儲存過程執行後的out參數:
CALL SomeStoredProcedure($someInParameter1, $someInParameter2, @someOutParameter); SELECT @someOutParameter;
這種修改後的方法模仿直接呼叫 MySQL 中的預存程序時觀察到的行為。
透過採用這些解決方法,與使用 PDO 呼叫不帶參數的預存程序相關的神秘錯誤消散,允許無縫執行和檢索輸出參數值。
免責聲明: 提供的所有資源部分來自互聯網,如果有侵犯您的版權或其他權益,請說明詳細緣由並提供版權或權益證明然後發到郵箱:[email protected] 我們會在第一時間內為您處理。
Copyright© 2022 湘ICP备2022001581号-3