PHP.net Web サイトによると、MySQL 拡張機能は PHP 5.5+ で廃止されました。MySQL を使用する多数の PHP サイトを考えると、MySQL を使用する既存のサイトのベスト プラクティスを知りたいです。MySQL をサポートするバージョンの PHP でサイトを安定させますか? または、別の DB 拡張機能に移行するためのコストと時間のコミットメントを引き受けますか?
5 に答える
開発時間があれば、 PDO または MySQLi に移行することを強くお勧めします。これらの拡張機能は、PHP グループによって維持され、公式にサポートされます。
アプリケーションが本当に安定していて安全な場合は、5.5 が生成する警告を無効にします。拡張機能が削除されても、PECL 拡張機能としてまだ存在していると確信しています。
MySQL 拡張機能は非推奨であり、MySQL サポート全体ではありません。PHP は現在、代わりに新しい MySQLi 拡張機能をプッシュしようとしています。
http://php.net/manual/en/book.mysqli.php
MySQLi は古い関数を改善し、MySQL 関数を手続き的に (以前のように) またはオブジェクトで実行できるようにします。
MySQL を使用している既存のサイトのベスト プラクティスを知りたいです。
これは答えやすいです。
アプリケーション コードには、Mysql (Mysqli または PDO と同様) の関数を含めないでください。
このような未加工の API 関数を使用している場合
$data = array();
$name = mysql_real_escape_string($_GET['name']);
$result = mysql_query("SELECT * FROM table WHERE name = '$name'");
while ($row = mysql_fetch_row($result)){
$data[] = $row;
}
次に、生の API を直接呼び出すのではなく、データベース ラッパーを使用してコードをすぐに書き直して、次のようにする必要があります。
$data = $db->getAll("SELECT * FROM table where name=?s",$_GET['name']);
コードを大幅に短縮してスマートにするだけでなく、すべての API 呼び出しを 1 つのライブラリに配置し、PHP チームが別の優れた拡張機能を削除することを決定したときに、新しい API に変更することができます。
PHP マニュアルに記載されているとおり、http://php.net/manual/en/intro.mysql.php
この拡張機能は PHP 5.5.0 で非推奨になりました。将来的に削除されるため、新しいコードを書くことはお勧めしません。代わりに、mysqli または PDO_MySQL 拡張機能を使用する必要があります。MySQL API を選択する際のさらなるヘルプについては、MySQL API の概要も参照してください。
mysqli を使用する必要があります。
mysql から離れる場合は、MySQLiではなくPDOを使用してください。
mysqli または PDOを参照してください - 長所と短所は何ですか?
私が見ているように、PDO > MySQLi > mysql です。
PDO プロの一部:
- マルチデータベース
- オブジェクト指向 (オプションの dblink を提供しない場合、奇妙な副作用を伴うグローバル関数はありません)
- 速い
- 特別な MySQL 固有のオプションはまだ利用可能です: http://php.net/manual/en/ref.pdo-mysql.php