MySQLとMySQLiのどちらが優れていますか?なぜ?どちらを使用すればよいですか?
パフォーマンスだけでなく、その他の関連機能のほうがいいということです。
MySQLとMySQLiのどちらが優れていますか?なぜ?どちらを使用すればよいですか?
パフォーマンスだけでなく、その他の関連機能のほうがいいということです。
回答:
MySQLの改良された拡張機能の概要を見ると、2つの違いについて知っておく必要があるすべてがわかるはずです。
主な便利な機能は次のとおりです。
mysql、mysqli、PDOのいずれかを選択するのに役立つ専用のマニュアルページがあります。
PHPチームは、新規開発にはmysqliまたはPDO_MySQLを推奨しています。
mysqliまたはPDO_MySQL拡張機能を使用することをお勧めします。新しい開発に古いmysql拡張を使用することは推奨されません。詳細な機能比較マトリックスを以下に示します。3つすべての拡張機能の全体的なパフォーマンスはほぼ同じであると見なされます。拡張機能のパフォーマンスは、PHP Webリクエストの総実行時間の一部にすぎませんが。多くの場合、影響はわずか0.1%です。
このページには、拡張APIを比較する機能マトリックスもあります。mysqliとmysql APIの主な違いは次のとおりです。
mysqli mysql
Development Status Active Maintenance only
Lifecycle Active Long Term Deprecation Announced*
Recommended Yes No
OOP API Yes No
Asynchronous Queries Yes No
Server-Side Prep. Statements Yes No
Stored Procedures Yes No
Multiple Statements Yes No
Transactions Yes No
MySQL 5.1+ functionality Yes No
* http://news.php.net/php.internals/53799
ライブラリ(新しいmysqlndとlibmysql)を比較する追加の機能マトリックスがあります。
と非常に徹底的なブログ記事
mysqliの使用を中止しました。単に不安定すぎます。mysqliを使用してPHPをクラッシュさせるクエリがありますが、mysqlパッケージを使用すると問題なく動作します。また、mysqliはLONGTEXTカラムでクラッシュします。このバグは少なくとも2005年からさまざまな形で発生しており、依然として壊れています。私は正直に準備されたステートメントを使用したいのですが、mysqliは十分に信頼できません(そして、誰もそれを修正する気にしないようです)。本当に準備済みステートメントが必要な場合は、PDOを使用してください。
私にとって、準備されたステートメントは必須の機能です。より正確には、パラメーターバインディング(準備されたステートメントでのみ機能します)。これは、SQLコマンドに文字列を挿入する唯一の正気な方法です。「エスケープ」機能は本当に信用していません。DB接続はバイナリプロトコルですが、なぜパラメータにASCII限定のサブプロトコルを使用するのですか?