MySQL、MySQLi、PDOの違いは何ですか?[閉まっている]


128

MySQL、MySQLiPDOの違いは何ですか?

PHP-MySQLでの使用に最適なのはどれですか?

回答:


100

PHPからMySQLを使用する一般的な方法は3つ以上あります。これはいくつかの機能/違いを概説しますPHP:APIの選択

  1. (非推奨mysql関数は手続き型であり、手動エスケープを使用します。
  2. MySQLiは、オブジェクト指向バージョンと手続き型バージョンのmysql関数の代替です。準備されたステートメントをサポートしています。
  3. PDO(PHP Data Objects)は、他の多くのデータベースの中でMySQLをサポートする一般的なデータベース抽象化レイヤーです。準備されたステートメントと、データを返す方法に大きな柔軟性を提供します。

準備済みステートメントでPDOを使用することをお勧めします。これは適切に設計されたAPIであり、必要に応じて別のデータベース(ODBCをサポートするデータベースを含む)に簡単に移動できます。


9
手続き型の場合はmysql _ *()関数を使用する必要があるという混乱がありますが、OOの場合はmysqliを使用します。実際、mysqliはmysqlの初期(PHP 4)実装を完全に置き換えます。mysqliでは、手続き型スタイルとオブジェクト指向スタイルの両方を使用できます。
Patrick Allaert、2010年

@パトリック、ありがとう。これを修正しました。
Matthew Flaschen

46

これらはMySQLバックエンドにアクセスするための異なるAPIです

  • MySQLは歴史的なAPIであります
  • mysqliのは、歴史的なAPIの新バージョンです。パフォーマンスが向上し、機能のセットが向上するはずです。また、APIはオブジェクト指向です。
  • PDO_MySQLは、MySQL for PDOです。PDOはPHPで導入されており、プロジェクトはすべてのデータベースアクセスに共通のAPIを作成することを目的としているため、理論的にはコードを変更せずにRDMS間で移行できるはずです(クエリで特定のRDBM関数を使用しない場合) )、またオブジェクト指向。

したがって、どのようなコードを生成するかによって異なります。オブジェクト指向のレイヤーまたはプレーンな関数を好む場合...

私のアドバイスは

  1. PDO
  2. MySQLi
  3. mysql

また、私の考えでは、mysql APIはの今後のリリースで削除される可能性がありPHPます。


3
PHP7はmysql APIを削除し、PDOとmysqliを残しました
Manuel

3

mysqliはmysqlの拡張バージョンです。

PDO拡張機能は、PHPでデータベースにアクセスするための軽量で一貫したインターフェースを定義します。PDOインターフェースを実装する各データベースドライバーは、データベース固有の機能を通常の拡張関数として公開できます。


4
手動ファイルからのコピーはあまり役に立ちません。
XuDing、2015年

3

具体的には、MySQLi拡張機能には、古いMySQL拡張機能に比べて次の非常に便利な利点があります。

OOPインターフェイス(手続き型に加えて)準備済みステートメントのサポートトランザクション+ストアドプロシージャのサポート構文速度の向上デバッグの強化

PDO拡張

PHPデータオブジェクト拡張機能は、データベース抽象化レイヤーです。特に、これは多くのデータベースエンジン(もちろんMYSQLを含む)のドライバーを提供するため、MySQLインターフェイスではありません。

PDOは一貫したAPIを提供することを目的としています。つまり、データベースエンジンが変更された場合、これを反映するためのコード変更は最小限でなければなりません。PDOを使用する場合、コードは通常、使用しているドライバーを変更するだけで、多くのデータベースエンジンで「機能する」だけです。

PDOは、データベース間の互換性に加えて、MySQLドライバーを使用しながら、準備済みステートメントやストアドプロシージャなどもサポートしています。

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.