2017-10-16 2 views
0

私は、MSSQL Server上で次のクエリを実行しようとする教義DBALを使用しています:

$sql = "declare @new_id_num int; 
     set @new_id_num = 111111; 
     select @new_id_num as [ID_NUM];"; 

$statement = $conn->prepare($sql); 
$statement->execute(); 
$newIDNum = $statement->fetchAll(); 

しかし、私は戻って$ newIDNumで取得していますすべては空の配列です。
私はそれをどうしたらいいのか分かりません。通常のSQLコンソールではクエリはうまく動作します。 トレースが正常に実行されているようです。正しいクエリが実行されていることがわかります。

私は何か簡単なものがないと思いますか?

+0

上)(nextRowsetを呼び出すことは、 '@new_id_num = 111111に設定することである;'結果セットとしてカウントされています。これを回避する1つの方法は、クエリの開始時に 'SET NOCOUNT ON;'を使用することです。これをテストする方法の1つは、 '$ statement-> nextRowset();'を実行した後に正しい結果が得られるかどうかを見ることです(あるいは、それに相当するものがあれば、doctrineの仕組みがわかりませんが、PDO構文をPHP)。 – ZLK

答えて

0

ZLKは、複数の行セットを戻していた点で正しいです。
しかし、DBAL文から直接 - > nextRowset()を呼び出すことはできません。 あなたは基礎となるPDO文を取得する必要があり、私は_guess_うまず最初に起こっていること

$statement->getWrappedStatement()->nextRowset(); 
$newIDNum = $statement->fetchAll();