我一直在使用PDO一段時間,並且正在重構一個項目,以便它使用存儲的procs而不是內聯SQL。我收到一個我無法解釋的錯誤。我正在使用PHP版本5.3.5和MySQL版本5.0.7。使用PDO使用Out參數調用存儲過程
我只是想獲得一個基本的存儲過程與輸出工作。這裏是存儲過程:
DELIMITER //
CREATE PROCEDURE `proc_OUT` (OUT var1 VARCHAR(100))
BEGIN
SET var1 = 'This is a test';
END //
這裏是我使用調用PROC代碼,$ DB是PDO的一個實例:
$stmt = $db->prepare("CALL proc_OUT(?)");
$stmt->bindParam(1, $return_value, PDO::PARAM_STR, 4000);
// call the stored procedure
$stmt->execute();
echo $returnvalue;
簡單吧?然而,這將導致以下錯誤:
exception 'PDOException' with message '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
如果我直接調用PROC像這樣:
CALL proc_OUT(@res);
SELECT @res;
如期工作,導致我相信,有一個與它是怎樣一個問題被稱爲PHP,但我似乎無法找到問題是什麼。我正在按照the manual中的說明進行操作,但仍然出現此錯誤。任何人都可以提出我可能做錯了什麼?任何建議將非常感激。非常感謝!
http://stackoverflow.com/a/4502524/815386 –
我已經複製這與MySQL 5.5.28和PHP 5.3.10。另外,你似乎有兩個版本的'$ return_value'-另一個沒有下劃線。這是打算嗎?似乎沒有在輸出上有所作爲。 –