4

Yii を使用して mysql ストアド プロシージャを処理しています。sp はいくつかのパラメーターを取り、そのうちの 1 つは出力パラメーターです。

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

質問を回避するにはどうすればよいですか? ありがとう。

4

1 に答える 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(); 
于 2013-12-31T20:13:47.420 に答える