php – 如何在yii框架中获取mysql存储过程输出参数

我正在使用Yii来处理mysql存储过程. sp有几个参数,其中一个输出参数.

执行sp后,当我尝试获取输出参数时,我遇到了错误

CDbCommand无法执行sql语句:sqlSTATE [HY000]:常规错误:2014在其他未缓冲的查询处于活动状态时无法执行查询.考虑使用PDOStatement :: fetchAll().或者,如果您的代码只是针对MysqL运行,您可以通过设置PDO :: MysqL_ATTR_USE_BUFFERED_QUERY属性来启用查询缓冲.执行的sql语句是:选择@error_info作为结果;

我的模拟代码如下:

$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();  

我怎么能绕过这个问题呢?谢谢.

解决方法:

试试这个,它对我有

$command = $connection->createCommand("CALL r emove_places(:user_id,:placeID,:place_type,@out)"); 
$command->bindParam(":user_id",$user_id,PDO::ParaM_INT);
$command->bindParam(":placeID",$placeID,PDO::ParaM_INT);
$command->bindParam(":place_type",$place_type,PDO::ParaM_INT);
$command->execute();
$valueOut = $connection->createCommand("select @out as result;")->queryScalar(); 

相关文章

1、将Yii2.0advanced版中应用主体frontend或backend应用复制...
Yii2restfulAPI文档一、配置模块:1.Config/main.php:  2...
Yii在framework/i18n/data/%lang%.php文件中有很多翻译.这...
在Yii2中,官方的页面多语言解决方案有两个:方案1,使用Yii...
Yii2.0对数据库查询的一些简单的操作1234567891011121314151...
数据查询User::find()->all();此方法返回所有数据;User:...