2017-10-16 77 views
0

我試圖運行MSSQL Server上下面的查詢,使用Doctrine DBAL:發行教義DBAL和SQL變量

$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

我會_guess_的第一件事情是發生調用nextRowset()是'SET @new_id_num = 111111;'被算作一個結果集。避免這種情況的一種方法是在查詢開始時使用'SET NOCOUNT ON;'。你可以測試這種方法的一個方法是看看執行後獲取正確結果(或任何相當於你,我不知道如何學說是如何工作的,但我認爲它使用PDO語法中的$ statement-> nextRowset(); PHP)。 – ZLK

回答

0

ZLK是正確的,它返回多個行集。
但是,不能直接從DBAL語句調用 - > nextRowset()。 你必須讓底層的PDO聲明,並就

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