【发布时间】:2013-05-11 07:14:27
【问题描述】:
我正在使用 Yii 来处理一个 mysql 存储过程。 sp 有几个参数,其中一个是输出参数。
执行sp后,当我尝试获取输出参数时,我遇到了错误
CDbCommand 未能执行 SQL 语句:SQLSTATE[HY000]:一般错误:2014 在其他无缓冲查询处于活动状态时无法执行查询。考虑使用 PDOStatement::fetchAll()。或者,如果您的代码只针对 mysql 运行,您可以通过设置 PDO::MYSQL_ATTR_USE_BUFFERED_QUERY 属性来启用查询缓冲。执行的 SQL 语句是:select @error_info as result;
我的模拟代码是这样的:
$sql = 'CALL p_bid(:username, @param)';
$command = Yii::app()->db->createCommand($sql);
$command->bindParam(":username", $username, PDO::PARAM_STR);
$command->execute();
// the following line raise the error
$errorInfo = Yii::app()->db->createCommand("select @error_info as result;")->queryScalar();
我怎样才能绕过这个问题?谢谢。
【问题讨论】:
-
mock up code有输入错误,param应该是error_info'
-
只需点击“编辑”即可编辑您的帖子。 :)
-
可能值得一试:stackoverflow.com/questions/9017861/… 根据该帖子,这是一个 PHP 错误,已通过更新到 PHP 5.3.2 得到修复。
-
感谢您的提示,我会尝试您的建议,稍后再回来。
-
我想通了,没有正确使用是我的错误。我应该添加以下几行。 $command->getPdoStatement()->fetchAll(); 261 $command->getPdoStatement()->closeCursor();
标签: php stored-procedures yii