Linux での MsSQL 拡張機能のインストールについては、PHP プログラマー Lei Xuesong のブログで以前に詳しく紹介されています。これを解決したら、国産の優秀なPHPフレームワークThinkPHPを使った方がスムーズかなと思いました。ただし、MsSQL データベースに接続するときに依然としていくつかの問題が発生し、オンラインには解決策があまりありませんでした。以下では、PHP プログラマーの Lei Xuesong が、ThinkPHP プロジェクトで MsSQL データベースにリンクする際のエラーと解決策を要約し、困っている友人と共有しています。
1. エラー「未定義のクラス定数 'PDO::SQLSRV_ATTR_ENCODING」
具体的な解決策は次のとおりです: ThinkPHPLibraryThinkDbDriverSqlsrv.class.php 行 26 を追加します。 「PDO::SQLSRV_ATTR_ENCODING => PDO::SQLSRV_ENCODING_UTF8」はコメントアウトできます。
2. エラー "SQLSTATE[IMSSP]: PDO オブジェクトでサポートされていない属性が指定されました"
具体的な解決策は次のとおりです: コメントのみThinkPHPLibraryThinkDbDriver.class.php の '$this->options[PDO::ATTR_EMULATE_PREPARES] = false' の 101 行目を概説します。
3. 元のテーブル名が大文字の場合、テーブル名が見つからないというエラーが報告されます。
具体的な解決策は次のとおりです。 MsSQL データベース テーブル名を小文字にするかどうかに関係なく、ThinkPHP プロジェクト内のすべてのテーブル名は小文字になります。
以下に ThinkPHP3.2 で MsSQL を動作させるための設定ファイル conf.php を添付します。
returnarray(
//'設定項目'=>'設定値'
'DB_TYPE'=>'sqlsrv',//データベースタイプ
'DB_USER'=>'',//ユーザー名
'DB_PWD'=> ; '',// パスワード
'DB_PORT'=>'',// ポート
'DB_PREFIX'=>'',// データベーステーブルプレフィックス
'DB_DSN'=>'dblib:host=IP アドレス:ポート;dbname=データベース名',
'DB_CHARSET'=>'utf8',//文字セット
) ;
このプロジェクトでは、ThinkPHP フレームワークを使用して MsSQL データベースを操作するのは初めてだったので、順風満帆ではありませんでした。それでも多くの知識を学び、いくつかの原則をまとめました。まず、実践することで真の知識が得られます。これは、PHP プログラマーにとって、環境やシステムが異なれば間違いを犯す可能性があり、それが正しいかどうかがわかります。第二に、新しい問題に直面するときは、忍耐、自信、決意が必要です。原則を明確にし、問題を自分が知っているいくつかの知識ポイントに解決します。第三に、自分自身を認識する必要があります。誰もすべてを行うことはできません。 PHP プログラマーとしてどれだけ長く活動していても、常に問題に遭遇します。もっと他の人とコミュニケーションを取り、外部の力をもっと活用し、より多くのオンライン情報を参照する必要があります。最後に、ThinkPHP 開発者とオープンソース業界に貢献してきた先輩たちに感謝したいと思います。
タグ: PHP プログラミング
出典: Thinkphp による MsSQL の操作体験