10

私は長年、phpでpearパッケージを使用してきました。MDB2 pear パッケージを使用するサイトをアップグレード/移動中ですが、PHP 5.3.X 用に更新されていません。

5.3 では、MDB2 がこれらの新しい厄介なエラーを返しています。

Unknown: Assigning the return value of new by reference is deprecated in /usr/local/lib/php/MDB2.php on line 390

エラー報告の設定を変更してそれらを取り除くことができることは知っていますが、例外を設けたくありません。とにかく、最近MDB2を使用していて解決策を持っている人はいますか? 推奨する同様のデータベース パッケージはありますか?

4

7 に答える 7

9

mysqli_*少なくとも大規模なプロジェクトに取り組んでいる場合、または PDO 関数/メソッドを直接使用したくない場合は、間違いなく ORM を使用します。Doctrineは最近、最も開発/使用されています (これはデフォルトの ORM です)。 symfony Framework の実装であり、Zend Framework に非常に簡単に統合できます)

ただし、エラーについてE_DEPRECATED: PHP 5.3 は非常に新しく、多くのライブラリ/ソフトウェア/プロジェクトがまだ適応されていません。

于 2009-10-07T10:28:22.263 に答える
9

コマンドラインからベータ 3 バージョンにアップグレードすることもできます

pear upgrade MDB2-beta
pear upgrade MDB2_Driver_Mysql-beta

現在の安定版が厳密なエラー報告に準拠していない理由の説明: http://pear.php.net/bugs/bug.php?id=9756

コマンドのソース:
http://pear.php.net/bugs/bug.php?id=18050

于 2012-04-13T18:05:12.397 に答える
7

この問題について Google の検索結果で上位に表示されるようになったので、これについてコメントします。

MDB2 の主任開発者に連絡したところ、次のように言われました。

SVN から MDB2 のコピーをチェックしてください。PHP5.3 と完全に互換性があり、多くのパフォーマンスが改善されています。現在、新しい SQL Server ドライバーの修正を待っています (Microsoft は今週、それに取り組んでいます)。その後、新しい安定版リリースをプッシュします。

(編集、4年後:これはもはや正しくありません。これをしないでください)

于 2010-05-17T10:57:38.850 に答える
3

ここから MDB2 の最新バージョン (MDB2-2.5.0b3) をダウンロードしましたhttp://pear.php.net/package/MDB2/downloadで、すべてのエラーが解消されました。PHP バージョン 5.3.5 で問題なく動作するようです

于 2011-08-05T10:06:07.587 に答える
1

Zend Frameworkデータベース サポートを使用するか、DoctrinePropelなどの ORM を使用できます。

于 2009-10-07T07:42:57.810 に答える
0

MySQL に MDB2 のみを使用する場合は、それを置き換えて、大部分の関数を MDBDid に保持できます: http://azure-dev.kiao.net/648-mdb2 適応するコードはほとんどありません。

于 2016-01-15T12:47:27.337 に答える
0

MDB2 と PHP 5.3 を使用して、非推奨のエラーと警告をすべて回避しましたが、MDB2 で非常に奇妙なエラーが発生したため、内部で何が起こっているのか疑問に思っています。私の環境はCentOS、PHP 5.3、MDB2-2.4.1、MySQL 5.0.77です。

いつでも、php ファイルで autoExecute 2x を使用しますが、2 回目は失敗します (準備してから実行しようとした場合も同様です)。私は MySQL クエリ ログに記録してきました。成功した INSERT には値が表示されますが、失敗した INSERT には常にプレースホルダーしかありません。すなわち: 値 (?, ?, ?, ?)。そして MDB2_Error は常に RECURSION に言及します

lastInsertID() は、MySQL テーブルと自動インクリメント フィールド (mysqli ドライバーを使用) では機能しませんでした。十分なデバッグを行い、コール スタックの奥深くまで行ったところ、結果がオブジェクトに取り込まれすぎて、それが何であるかがわからないほどになりました。最後まで。私は MDB2 をもっと使いたいと思っていますが、実際には、これらの問題のために何度も真っ直ぐな mysql に戻さなければなりませんでした。もしかすると、ルーカスや他の開発者がこの問題に光を当てたり、正しい方向を示したりするかもしれません。

于 2011-09-23T08:39:15.483 に答える