|
NAME="GENERATOR"
CONTENT="Modular DocBook HTML Stylesheet Version 1.7">第 47 章 データベースに関する問題このセクションではPHPとデータベースとの関係に関する一般的な質問を扱 います。なんと!PHPは事実上あらゆるデータベースにアクセスすることが できます。
Windowsマシン上では、ODBCサポートと適切なODBCドライバを使用すれ ばよいだけです。 Unixマシン上では、Sybase-CTドライバを使ってMicrosoft SQLサーバに アクセスすることができます。なぜなら(ほとんど完全に)プロトコル互 換だからです。SybaseはLinux用のフリー な必須ライブラリを作成しました。他のUnixシステムでは適切 なライブラリを手に入れるためにSybaseと連絡を取る必要があります。 次の質問に対する回答も参照してください。 はい。もし全て(PHPとMicrosoft Access)をWindows9x/Me/NT/2000上で 動作させるのであり、ODBCとMicrosoftが提供するODBCドライバ for Microsoft Accessが使用できる状態ならば、すべての必要なツールは揃っ ています。 UnixでPHPを動作させてWindowsマシンで操作するMS Accessに接続した い場合にはUnix ODBCドライバが必要です。OpenLink SoftwareがUnixベース のODBCドライバを提供しています。このドライバには無期限の試用版が あり、また商用サポートバージョンが675ドル〜 で提供されています。 他には、Microsoft SQLサーバにODBCドライバを使用してデータを保存 するという手段もあります。これによって、Microsoft Access(ODBCを 使用します)とPHP(組み込まれているドライバを使用します)でデータに アクセスすることができます。また、Microsoft AccessとPHP両者共に 解釈可能な中間ファイル(例えば単層からなるファイルや、 dBaseデー タベース等)を使用する手もあります。これに関してはOpeLink SoftwareのTim Hayesが以下のように述べています:
うまくいくことが分かってるもう一つの方法はMySQLと、Windows用の MyODBCドライバを利用してデータベースを同期する方法です。Steve Lawrenceが言うには:
Tips and Tricks(役に立つヒント):
3. PHP 4にアップグレードしたら、mysqlサーバが"Warning: MySQL: Unable to save result set in ..."という警告をしつづけます。何が 起こっているのでしょうか? 一番に考えられるのはPHP 4を、MySQLへのパス指定なしに'-- with-mysql'オプションをつけてコンパイルしたという場合です。これ はPHPが組み込まれたMySQLクライアントライブラリを使用するというこ とを意味します。もしあなたのシステムで、PHP 3やauth-mysqlの apacheモジュールといった他のバージョンのMySQLクライアントを使用 するアプリケーションが同時に動作している場合には、各クライアント 間でバージョンの競合が発生してしまいます。 PHP 4を'--with-mysql=/your/path/to/mysql' というようにオプションにパスを記述して再コンパイルすることで通常 の場合は問題は解決されます。 もしあなたのシステムのMySQLライブラリがpthreadsとリンクされてい る場合にはこの現象が発生します。lddコマンドを使用してチェックし てください。もしpthreadsがリンクされている場合は、MySQLのtarball を展開してソースからコンパイルしなおしてください。もしくはSRPMの SPECファイルのスレッドクライアントコードの箇所を削除してコンパイ ルしなおしてください。いずれかの方法で問題を解決できます。その後、 PHPを新しいMySQLライブラリでコンパイルしなおしてください。 5. なぜこのようなエラーがでるのでしょうか?: "Warning: 0 is not a MySQL result index in <file> on line <x>" もしくは "Warning: Supplied argument is not a valid MySQL result resource in <file> on line <x>? あなたは値が0である結果(result)IDを指定しようとしています。0はあ なたのクエリが何らかの理由で失敗したことを示しています。応答 (result)IDを使用する前に、クエリを送信したあとのエラーをチェック する必要があります。以下のようなコードが正しい方法です。
|