ホームページ >バックエンド開発 >PHPチュートリアル >ThinkPHP2.0 が MSSQL プロンプトを読み取る キーワード「AS」付近の構文が正しくない solution_PHP チュートリアル

ThinkPHP2.0 が MSSQL プロンプトを読み取る キーワード「AS」付近の構文が正しくない solution_PHP チュートリアル

WBOY
WBOYオリジナル
2016-07-13 10:26:10907ブラウズ

質問コードは次のとおりです:

リーリー

クエリを使用するとデータを正しく読み取ることができますが、M メソッドを使用するとデータを読み取ることができず、キーワード「AS」付近の構文が間違っているというエラーが報告されます
。 その理由は、DbMssql.class.php ドライバーのクエリ ステートメントに問題があるためです。

TP2.0 の MSSQL ドライバは SQL 2005 では有効ですが、2000 バージョンでは有効ではありません。その理由は、2000 バージョンには ROW_NUMBER 関数が存在しないためです。この関数は 2005 でのみ利用可能です。便利で便利なようです。データページングの効率化。

公式が 2000 ドライバーを TP2.0 に追加できることを願っています。現在採用されている一時的な解決策は、ThinkPHPLibThinkDbDriverDbMssql.class.php を変更し、25 行目の protected $selectSql の前に「//」を追加することです。 そして
の326行目

リーリー
次のように変更されました:

リーリー
この変更後、基本的に一般的なSQL要件を満たすことができますが、MSSQL 2000のLIMITメソッドは上位Nに基づいているため、LIMITは使用できません

これは達成されました

それが面倒だと思う場合は、MSSQL のサポートがはるかに優れている Adodb クラス ライブラリと組み合わせてください。 Adodb クラス ライブラリを結合する私の方法は次のとおりです:

まず、Adodb クラス ライブラリをダウンロードして ThinkPHP の Vendor ディレクトリに抽出し、adodb.inc.php の名前を adodb.php に変更します

次に、プロジェクトのライブラリに CommonAction.class.php を次の内容で作成します

リーリー
ADODB を使用するには、この CommonAction.class.php ファイルをプロジェクトの他のファイルで参照する必要があります。例:



リーリー
このようにして、単純なデータ クエリには Thinkphp モジュールを使用し、ページング データ クエリには Adodb を使用できます。これは本当に愚かな方法です。私は、ThinkPHP が使用できる MSSQL 2000 バージョンを作成できることを願っています。完璧なドライブ。

http://www.bkjia.com/PHPjc/824801.htmlwww.bkjia.comtru​​ehttp://www.bkjia.com/PHPjc/824801.html技術記事問題のコードは次のとおりです。 php class IndexAction extends Action{ public functionindex(){ /* $Model = new Model(); $test = $Model-query('select top 10 * from f_city');テスト) */ $...
声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。