PHP5.3とMDB2 – SELECTで取得できない?!


PEARのMDB2を利用してDBと接続した際、INSERTなどはできるがSELECTでデータを取得できないという状況に直面しました。


環境は

  • WIndows2008 WebServer
  • IIS 7.0
  • PHP 5.3.3
  • MySQL 5.1.33

です。

状況の詳細は次の通りです。
stable版のPEAR MDB2 ver.2.4.1をインストール。MySQLに合わせてPHP5以上なのでMDB2_Driver_mysqli 1.4.1もインストール。

PHP5.3系とMDB2の組み合わせだと、既知の問題として「Deprecated: Assigning the return value of new by reference is deprecated in」というエラーが出るようです。

どうやら新しいPHPのバージョンではnewでオブジェクトを生成すると自動的に参照されるにもかかわらず、MDB2では「=&」と記述しているため、再度参照しようとしてしまいエラーになるようです。

その解決方法としてエラーメッセージの行数を確認して「=&」を「=」に書き換えるという方法があるようです。
しかしこの解決策を実行してしまうとSELECT文を実行してもデータが取得できないという状況に陥ります。
かなりはまりました…。数時間は悩んだでしょうか…。

結論を述べると
PHP5.3以上を利用している場合、MDB2 ver.2.5.0b3とMDB2_Driver_mysqli ver.1.5.0b3を利用するようにしましょう。
これらはベータ版ですが正式にPHP5.3に対応しています。正しくSELECT文が実行されることはもとより、エラー表示も消えます。

関連記事

コメントを残す

メールアドレスが公開されることはありません。

Trackback URL

管理者の承認後に表示します。