8

最近、PHPマニュアルは、すべてのmysql関数ページに次の警告を表示し始めました。

この拡張機能の使用はお勧めしません。代わりに、MySQLiまたはPDO_MySQL拡張機能を使用する必要があります。詳細については、MySQL:APIガイドの選択と関連するFAQも参照してください...

MySQLiは以前は非常にバグが多かったのですが、最終的にその名前にふさわしいものになるように改良されましたか?それが、彼らがMySQL拡張機能を放棄し、人々にMySQLiを使用させようとしている理由ですか?

実は、バグがなくなったらMySQLiを使いたいです。より多くの機能があり、オブジェクト指向です。

これについて何かコメントはありますか?

//編集:私が知りたいのは、MySQLiを使用しても大丈夫かどうかです。それともまだバグがありますか?代わりにPDOを使用する必要がありますか?

4

4 に答える 4

9

はい。(非常に)長いので。これで、mysqli、さらにはPDOができました。

私は自分自身をmysqliに縛り付けないでしょう、私はPDOを好みます。あるデータベースシステムから別のデータベースシステムへの移行が容易になるだけでなく、エラー処理も向上します。

私が知りたいのは、MySQLiを使用しても大丈夫かどうかです。それともまだバグがありますか?

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

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

mysqliを使用するための唯一の議論がmysqlとの類似性である場合、とにかくmysqliを最大限に使用することはおそらくないでしょう。mysqliを最大限に活用したい場合は、「新たに」学習を開始する必要があります(学ぶことはそれほど多くありません)。「スクラッチ」から新しいツールを学び始めたら、そもそも、より良い代替手段であるPDOを学びませんか?

一方、PDOも完璧ではありません。PDOを使用すると、MySQL固有のAPI(ポストコンストラクトset_charset、infile設定、非同期クエリ、プリペアドステートメントからのOUTパラメータなど)にアクセスできません。また、必要に応じて、真のプリペアドステートメントを実行するように設定する必要があります。

于 2012-06-14T22:05:52.987 に答える
3

PHP MySQLiは、MySQLの改良された拡張機能です。

mysqli拡張機能を使用すると、MySQL4.1以降で提供される機能にアクセスできます。

MySQLi拡張機能の概要で両方を比較できます。


オブジェクト指向の将来性のあるソリューションを探している場合、その方法はPHPPDOです。

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

..。

PDOは、データアクセス抽象化レイヤーを提供します。つまり、使用しているデータベースに関係なく、同じ関数を使用してクエリを発行し、データをフェッチします。

于 2012-06-14T22:13:29.197 に答える
2

はい、MySQLiを使用できます。記述内容は真実です。このAPIを使用すると、MySQLAPIから簡単に変更できます。

新しいプロジェクトでは、ext / mysqlを使用せずに、 ext/mysqliまたはPDO_MySQLを使用することをお勧めします。

2009年にバグがあったものを書いたことがないので、これらのバグがなくなったかどうかはわかりません。そうだと思いますが、まあ、自分でチェックしてください。

MySQLクライアントサーバーライブラリ(libmysql)の代わりに、 MySQLネイティブドライバーでext/mysqli を使用することもできます。

于 2012-06-14T23:16:41.023 に答える
1

そろそろ。APIはmysql使いやすいものの、多くの問題があります。おそらく最悪の問題は、プリペアドステートメントのサポートが完全に欠如していることです。これにより、文字列操作によってSQLのビットをつなぎ合わせる必要があります。これは遅いだけでなく、SQLインジェクションの脆弱性の主な原因でもあります。

MySQLiに対するPDOの利点の1つは、将来のプロジェクトで別のDBMSを使用することを決定したときに、新しいAPIを学習する必要がないことです。

于 2012-06-14T22:24:30.747 に答える