為什麼在呼叫帶有 Out 參數的預存程序時,PDO 會拋出「OUT 或 INOUT 參數...不是變數」?

Patricia Arquette
發布: 2024-11-08 06:58:02
原創
1053 人瀏覽過

Why Does PDO Throw

使用 PDO 呼叫帶輸出參數的預存程序

使用 PDO呼叫預存程序可以是一個無縫的過程;然而,當嘗試使用不含參數的預存程序時,可能會出現一個神秘的錯誤:

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;
登入後複製

這種修改後的方法模仿直接呼叫預存程序時觀察到的行為

透過採用這些解決方法,與使用PDO 呼叫不帶out 參數的預存過程相關的神秘錯誤就會消失,從而允許無縫執行和檢索out 參數值。

以上是為什麼在呼叫帶有 Out 參數的預存程序時,PDO 會拋出「OUT 或 INOUT 參數...不是變數」?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

來源:php.cn
本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
作者最新文章
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板