pdo mysql 存储过程_使用PDO使用Out参数调用存储过程

我已经使用PDO一段时间了,并且正在重构一个项目,以便它使用存储的proc而不是内联SQL。我收到一个我无法解释的错误。我正在使用PHP版本5.3.5和MySQL版本5.0.7。

我只是想获得一个带有输出的基本存储过程。这是存储的过程:

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调用方式存在问题,但是我似乎找不到问题所在。我正在按照手册中的说明进行操作,但仍然出现此错误。有人可以建议我做错了什么吗?任何建议将不胜感激。非常感谢!

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值