我一直在使用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'-另一个没有下划线。这是打算吗?似乎没有在输出上有所作为。 –