首页 文章

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

提问于
浏览
4

我正在使用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();

我该如何解决这个问题?谢谢 .

1 回答

  • 2

    试试这个,它对我有用

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

相关问题