0

mssql エディターで正常に動作する一般的なテーブル式があります。ただし、PHP で同じ文字列変数を使用してodbc_exec($dbhandle,$query )それを使用すると、行が返されません。エラーはスローされません。これはPHPの制限ですか?他のさまざまなテーブルに対する他の選択クエリは正常に実行されます。問題は CTE ステートメントのみです。

4

1 に答える 1

1

これは古い質問であることは知っていますが、回答が得られておらず、Google の検索結果で上位にランクされているので、私が参加したいと思いました。

MS SQL サーバーにクエリを実行する PHP のネイティブ メソッドはどれも、共通テーブル式 ('WITH' 句) をサポートできません。これらには、mssql_* ライブラリと odbc_* ライブラリが含まれます。

これは、MS SQL が (実行用のマクロを作成することによって) CTE を処理する方法によるものです。良いニュースは、Microsoft のライブラリ (sqlsrv_*) が CTE をネイティブにサポートしていることです。

sqlsrv_* ライブラリは、接続、単純なクエリ、準備されたステートメントなどの作成と使用に関して、mssql_* と同じように動作します。これらは、MS SQL サーバーで mssql_* または odbc_* を使用するためのほとんど「ドロップイン」の代替品であり、大幅に高速です。起動します。

このリンクから sqlsrv ライブラリを取得できます。これを書いている時点では、SQL 2008 には 2.x で問題ありませんが、SQL 2012 には 3.x が必要です。

于 2014-01-13T09:57:38.230 に答える