Benim uygulamada ciddi bir sorun var.
Benim SQL Server veritabanı 'CTE' seçeneğini yapmak ve sonra sonuç nesne satır miktarını saymak için sqlsrv_num_rows kullandığınız zaman ben garip bir sonuç var: -1.
Bu değer bile manuel değil (link: http://msdn.microsoft.com/en-us/library/ee376931(SQL.90).aspx).
Örnek kod:
: Örneğin - 'Ortak tablo ifade CTE' W select var
$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 konsolda @ @ rowcount uygun değeri var, ama biz php komut dosyası bu seçimi kullanabilirsiniz zaman -1 döndürür.
örnek:
// 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
Ben bütün coursors http://msdn.microsoft.com/en-us/library/ee376927(SQL.90).aspx ve Satırları parametreleri seçilmesi bunu düzeltmek için çalıştı ve ben bunu düzeltmek olamaz.
btw. benim durumumda çalışan tek seçme Satır SQLSRV_CURSOR_FORWARD olduğunu.
My environment: PHP 5.3 MSSQL 2005 Windows Server SQL Server Driver for PHP 1.1 ( msdn dot microsoft dot com/en-us/library/ee229551(SQL.10).aspx) Database encoding: unicode
Ben sb bu sorunun çözümünü biliyorum, umarım.