インターネットを介して一種の研究をした後(そしてStackoverflowで)、私はまだどの方法が学習/使用に最も適しているか決定するのに苦労しています。 PHPでプログラミングするときにもっと掘り下げてください。PHP | PEAR:MDB2とPDOとNative-PHP(Raw)との比較
DAOを使用する利点は、アプリケーションファイル全体に広がったmysql_ *関数を使用してDBを処理する場合に理解できます。
それはPDO対MDB2間で決定しています - PDOの賛成で輝く一つのことは、それだけでmysql_としてMySQL APIに直接話し機能*それは抽象的mysql_ないという事実である*やります。それはまた、PHPのコンパイルされたCの拡張ですので、非常に高速です。 MDB2(または他のライブラリ)はPHPで書かれているので、実行時に解析され、mysql_ *関数の上に座る必要があります。したがって、スピードの面ではPDOが勝利するのですか?
それは方法はほとんどのSQLインジェクション攻撃を防ぐことができますバインダーのparamsを使用しての方法で、DB抽象化層の セキュリティ上の利点(プリペアドステートメントを)輝くネイティブ非抽象化され、PHP上DB抽象化層を比較するために来ますまた、RDBMSのタイプを将来必要に応じて切り替える方が簡単です(それは一般的ではありませんが)。(DAOライブラリには他にも利点があり、時間がかかります。
とにかく私はこれらの図書館の1つを使用すべきではないかと判断するのに役立つ専門家がいることを願っています。もしそうなら、どちらが最もおすすめですか?私のすべてのプロジェクトは何年も改善されるでしょうか?
ありがとうございました。
PDOにはコンパイルされたコンポーネントが含まれている可能性がありますが、「未処理」のインターフェイスではまだ処理されていません。まだオーバーヘッドはありますが、別の場所にあります。ここから得られる唯一の良い答えはpdo v.sを試すことです。 mdb2 v.s.あなたの特別なケースでどちらが良いかを見てください。 –
私はPEARを実践しました:MDB2 - ジレンマは、それらのライブラリの1つ(MDB2、PDO、ADOdb ..)を使用する場合と、もしどちらかが最も推奨される場合(基本的にすべて同じ構文異なる)、または私は自分のDAOを抽象化する必要があります - 私はコードがどのように見えるかを正確に知っているでしょう、私は3次元コードに傾倒するのではなく、私が理解しているところからプラスPDOは他のライブラリを実行して、mysql_ *関数の上に構築された抽象化の代わりにデータベースと直接通信します。 – Adam
mysql _ *()は抽象化ではありません。 PDOと同様に、それらは基礎となるlibmysqlクライアントライブラリへの直接呼び出しです。 mysql _ *()は、より直接的にライブラリ呼び出しにマップするだけです。 –