は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 ドライバーが問題の原因であると思われます。SQL for PHP 3.0 がリリースされたようです。これは私が推測する問題である可能性があります..クエリしようとしているDBは、以前に問題なく使用していたものよりも新しいバージョンのMSSQL(2008?対2005)であるためです。ただし、このドライバーは VC9 のみでコンパイルされており (2.0 は両方で利用可能でした)、私の PHP 5.3 は VC6 でコンパイルされているため、ロードされません。これは、ソース コードを使用して再コンパイルするか、PHP を VC9 バージョンで再インストールする必要があるということですか?
再コンパイルの方法がわからないので、PHP 5.3 の VC9 バージョンを再インストールするのが今の私の方法だと思います。