PHP+;SQL Server+;SQL Server驱动程序=sqlsrv\u num\u行严重问题
我在申请中遇到了严重的问题 当我在SQL Server数据库中选择“CTE”,然后使用sqlsrv_num_rows来计算结果对象中的行数时,我得到了奇怪的结果:-1 此值甚至不在手册中(链接:) 示例代码: 我们已选择“CTE-公共表表达式”,例如:PHP+;SQL Server+;SQL Server驱动程序=sqlsrv\u num\u行严重问题,php,sql,sql-server,Php,Sql,Sql Server,我在申请中遇到了严重的问题 当我在SQL Server数据库中选择“CTE”,然后使用sqlsrv_num_rows来计算结果对象中的行数时,我得到了奇怪的结果:-1 此值甚至不在手册中(链接:) 示例代码: 我们已选择“CTE-公共表表达式”,例如: $sql = ";WITH unsorted_cte AS ( SELECT * FROM xxx WHERE yyy ) SELECT u_cte.* FROM [unsorted_cte] u_c
$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控制台中@@rowcount有适当的值,但是当我们在php脚本中使用这个select时,它返回-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
我试图在整个课程中修复它,并选择行参数,但我无法修复它
顺便说一句,在我的例子中,唯一有效的选择行是SQLSRV\u CURSOR\u FORWARD
我的环境:
PHP5.3
MSSQL 2005
Windows服务器
PHP1.1的SQL Server驱动程序(msdn.microsoft.com/en-us/library/ee229551(SQL.10.aspx)
数据库编码:unicode
我希望,sb知道这个问题的解决方案。这里描述的问题暴露了构建sqlsrv驱动程序的ODBC驱动程序中的一个错误。ODBC驱动程序对以开始的SQL查询执行某种级别的解析,然后错误地处理该查询。解决方法是将查询作为存储过程执行,这会更改ODBC驱动程序执行的代码路径 SQL Server本机客户端团队(SNAC是Microsoft的ODBC实现)意识到了这个错误。我会确保他们知道这个错误造成的影响 谢谢
Brian Swan,Microsoft使用给定的工具格式化您的问题将使他人更容易帮助您。使用看起来像二进制字符串的按钮将代码格式化为代码。