2012-06-14 10 views
8

最近、PHPのマニュアルは、すべてのMySQLの機能のページで、次の警告を示す開始しました:この拡張のPHPはMySQLエクステンションを放棄しましたか?

使用が推奨されていません。代わりに、MySQLiまたは PDO_MySQL拡張を使用する必要があります。 ...詳細については、API ガイドおよび関連のFAQを選ぶ非常にバギーにするために使用

MySQLiのは、それは、その名前の最後に値するだように、彼らはそれを改善している。また、MySQLを参照してください?それで、MySQLの拡張機能を放棄し、人々にMySQLiを使用させようとしているのでしょうか?

実際には、MySQLiがバグではない場合、私はこれを使用したいと思います。それはより多くの機能を持ち、オブジェクト指向です。

これに関するご意見はありますか?

//私が知りたいことは、MySQLiを使用しても問題ないと思っています。それともまだバグですか?代わりにPDOを使うべきですか?

+4

* "MySQLiは以前は非常にバグがあった" * - どういう意味ですか? – hakre

+0

あなたの編集にも対応するために私の答えを編集しました。 – Flavius

答えて

2

はい、あなたはMySQLiと一緒に行くことができ、あなたが書いたものは真ですが、APIはMySQL APIから簡単に変更できます。新しいプロジェクトの場合

それはもはや内線/ mysqlのを使用していますが、内線/ mysqliのまたはPDO_MYSQLを使用しないことをお勧めします。

2009年にあなたのためにバグだったものを書いていないので、これらのバグがなくなったかどうかは分かりません。私はそうと思うだろうが、よく、自分で調べる。

また、代わりにのMySQLクライアント・サーバライブラリ(libmysql)MySQLのネイティブドライバEXT/mysqliのを使用する場合があります。

+0

あなたの素晴らしい答えに感謝します。 MySQLのネイティブドライバを好む理由は何ですか? –

+1

ここをクリックしてください:http://blog.ulf-wendel.de/?p=157 - これは、たとえば、メモリ管理が優れていますが、それはただの理由の1つです。mysqliまたはPDOのどちらでも使用できます。 – hakre

9

はい。それ以来(非常に)長い。私たちは現在、mysqli、あるいはより良いPDOを持っています。

私は自分自身をmysqliにロックしません。私はPDOが好きです。あるデータベースシステムから別のデータベースシステムへの移行が容易になるほか、エラー処理も改善されます。

私が知りたいのは、MySQLiを使用しても問題ないと思っています。それともまだバグですか?

MySQLi自体は全くバグがなく、本番環境で使用されています。

代わりにPDOを使用する必要がありますか?

mysqliを使用する唯一の引数がmysqlと似ている場合、おそらくmysqliを最大限に活用することはできません。 mysqliを最大限に活用したい場合は、「新たに」学習する必要があります(学習するのはそれほどではありません)。新しいツールを「最初から」覚え始めるならば、最初にPDOを学ぶのはなぜですか?

反対に、PDOも完璧ではありません。 PDOでは、MySQL固有のAPIにアクセスすることはできません(設定後のset_charset、infile設定、非同期クエリ、準備済みの文からのOUTパラメータなど)。また、必要に応じて真の準備文を実行するように設定する必要があります。

+0

2009年にMySQLiを試しましたが、正しく動作しませんでした。それ以来、私はデフォルトのMySQL拡張を使用しており、問題なく動作しています。何らかの理由でMySQLiをPDOするのではなく、むしろPDOですか?私はむしろMySQLとの類似性のためにMySQLiを使いたいと思っています。 –

+1

私は私の答えで「PDO over MySQLi」と言いました。 MySQLiコードは、扱いにくいエラー処理のために、自分の経験から必要以上に膨大なコードを作成する傾向があります。それがあなたにとって問題でないなら、MySQLiに行ってください。しかし、まず最初に両方を試してみて、よりエレガントなものを見ることを強くお勧めします。 – Flavius

+0

mysqliを使用するための唯一の引数がmysqlと似ている場合は、おそらくmysqliを最大限に活用することはできません。 mysqliを最大限に活用するには、新たに学習する必要があります。あなたが一から始めるならば、より良い選択肢 - PDOを学ばないのはなぜですか? – Flavius

3

PHP MySQLiは、MySQL拡張機能です。

mysqli拡張機能を使用すると、MySQL 4.1以上の機能にアクセスできます。

The MySQLi Extension Function Summaryで両方を比較できます。あなたは将来性ソリューションを探している場合


、オブジェクト指向、進むべき道はPHP PDOです。

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

...

PDOは関係なく、あなたが使っているどのデータベースの、あなたがクエリを発行し、データをフェッチするために同じ機能を使用することを意味し、データ・アクセス抽象化レイヤーを提供します。

1

時間がかかりました。 mysql APIは使いやすいものの、多くの問題を抱えています。おそらく最悪の問題は、プリペアドステートメントに対する完全なサポートの欠如であり、これは文字列操作を介してSQLのビットをまとめることを強制します。これは遅いだけでなく、SQLインジェクションの脆弱性の主要な原因です。

MySQLiに比べてPDOの利点の1つは、将来のプロジェクトで別のDBMSを使用する場合に、新しいAPIを習得する必要がないことです。

関連する問題