我在我的應用程序嚴重的問題。PHP + SQL服務器+ SQL Server驅動程序= sqlsrv_num_rows嚴重的問題
當我做「CTE」選擇在我的SQL Server數據庫,然後我用sqlsrv_num_rows計算在結果對象中的行量我得到了奇怪的結果:-1。
這個值是連在手冊(聯繫:http://msdn.microsoft.com/en-us/library/ee376931(SQL.90).aspx)。
示例代碼:
W的選擇 'CTE - 公用表表達式' 例如:
$sql = ";WITH unsorted_cte AS
(
SELECT
*
FROM
xxx
WHERE
yyy
)
SELECT
u_cte.*
FROM
[unsorted_cte] u_cte
ORDER BY
u_cte.[zzzz] ASC";
在SQL控制檯@@行數有適當的值,但是當我們在PHP中使用這個選擇腳本返回-1。
樣本:
// make query with proper coursor
$result = sqlsrv_query($link, $sql, array(), array("Scrollable" => SQLSRV_CURSOR_KEYSET));
// var dump shows us proper resource
var_dump($result):
resource(3) of type (SQL Server Statement)
// sqlsrv_num_rows show us wrong rows count
var_dump(sqlsrv_num_rows($result));
int(-1)
// sqlsrv_errors are empty
var_dump(sqlsrv_errors());
NULL
我試圖修復它在整個coursors http://msdn.microsoft.com/en-us/library/ee376927(SQL.90).aspx和選擇行參數,我不能修復它。
btw。在我的情況下,唯一的選擇行是SQLSRV_CURSOR_FORWARD。
我的環境: PHP 5.3 MSSQL 2005 PHP 1.1 的Windows Server SQL Server驅動程序(MSDN點微軟點com/EN-US /庫/ ee229551(SQL.10)的.aspx) 數據庫編碼:統一
我希望,某人知道這個問題的解決方案。
使用給定的工具格式化您的問題將使這個人更容易幫助您。使用看起來像二進制字符串的按鈕將代碼格式化爲代碼。 – Buggabill 2009-11-23 15:21:38