私の問題は基本的に、PHPのsqlsrvを使用してsql-server 2000データベースにアクセスする必要がある/好むことに関係しています。私は、SQL Server 2005 でそれを使用してすべてのクエリを実行し、ODBC PHP ドライバーのようなものに切り替えることは、今ではかなりの頭痛の種になるプロジェクトに取り組んできました。これで、元の SQL Server 2000 データベースと 2005 が同じコンピューターにインストールされ、2 つのサーバーの間にリンク サーバーが作成されました。Management Studio Express でのテストでは、テーブルの 1 つに対して単純なクエリを実行することで機能しました。
今、私は sqlsrv_query を使用して PHP でまったく同じクエリを使用しており、エラーが発生しています。これをテストするための私のPHPコードは次のようになります
$connectionOptions = array("UID"=>"user","PWD"=>"password");
$res = sqlsrv_connect("(local)\SQLExpress", $connectionOptions);
if(!$res) die("ERRORS : " . print_r(sqlsrv_errors()));
echo "SELECT * FROM [ServerName].DB.dbo.Table<br/>";
$res = sqlsrv_query($res,"SELECT * FROM [ServerName].DB.dbo.Table");
if($res===false){
die("ERRORS : " . print_r(sqlsrv_errors()));
}else{
var_dump($res);
$ary = sqlsrv_fetch_array($res);
}
var_dump($ary);
echo "<hr>";
var_dump(sqlsrv_errors());
このコードの問題は、sqlsrv_query の結果が false を返さず、タイプ不明の resource(11) を返すことです。したがって、その結果に対して fetch_array を実行すると、無効なパラメーターが sqlsrv_fetch_array に渡されたことがわかります。この時点で何をすべきかわかりません。sqlsrv を介してリンク サーバーでクエリを実行するだけで問題が発生しますか?