我遇到了一个奇怪的问题,它sqlsrv_query()
返回一个有效的语句资源,但sqlsrv_fetch_array()
随后返回 false。我在 MS SQL Server Management Studio 中测试了我的查询 ( $q
),所以我知道它返回的结果具有一定数量的行。我的代码是...
$r = @sqlsrv_query($dbcMssql, $q, array(), array('Scrollable'=>'static')); // works
$rowCount = sqlsrv_num_rows($r); // this shows there are correct number of rows
$row = sqlsrv_fetch_array($r, SQLSRV_FETCH_ASSOC); // $row is FALSE
我在另一个 MSSQL 数据库上使用了相同的代码,它工作没有任何问题。此 MSSQL DB 的唯一区别是它使用 BIGINT 作为其主键,并且某些列名不同(这并不重要)。
我究竟做错了什么?
更新:
虽然$stmt
不是假的,但我还是查看了错误,它给了我
[0] => IMSSP
[SQLSTATE] => IMSSP
[1] => -35
[code] => -35
[2] => Invalid type
[message] => Invalid type
IMSSP 让我相信,根据文档http://php.net/manual/en/function.sqlsrv-errors.php
,是我的 SQL for PHP 2.0 驱动程序导致了问题。我看到 PHP 3.0 的 SQL 已经发布。这可能是我想的问题.. 因为我尝试查询的数据库是 MSSQL 的更新版本(2008 年?与 2005 年),而不是我以前使用的数据库,没有任何问题。但是,这个驱动程序只用 VC9 编译(2.0 可用于两者),而我的 PHP 5.3 是用 VC6 编译的。所以它不会加载。这是否意味着我需要使用源代码重新编译它或使用 VC9 版本重新安装 PHP?
我不知道如何重新编译,所以我想重新安装 VC9 版本的 PHP 5.3 是我现在要走的路。