ブログ


スパイシー技術メモ


PHP mysqli モジュールについて

CATEGORY: サーバープログラム

お恥ずかしながら、最近知ったのですが、PHP の Mysql モジュールは、DEPRECATEDなのですね。

PHP マニュアル > 関数リファレンス > データベース関連 > ベンダー固有のモジュール > MySQL > Mysql
この拡張モジュールは PHP 5.5.0 で非推奨になりました。将来削除される予定なので、 この拡張モジュールを使って新しくコードを書くことはおすすめしません。 新しくコードを書くときには mysqli や PDO_MySQL を使うべきです。

代わりに、mysqliもしくは、PDOを使うべきとのことですが、公式ドキュメントの比較を見てみます。違いは、方言レベルというところでしょうか、新規開発時での移行には苦労しなそうですね。

どの API を使うか
PHP には、MySQL への接続用の API が三種類あります。 以下に、mysql と mysqli そして PDO が提供する API を示します。

<!--php -->
// mysqli
$mysqli = new mysqli("example.com", "user", "password", "database");
$result = $mysqli->query("SELECT 'Hello, dear MySQL user!' AS _message FROM DUAL");
$row = $result->fetch_assoc();
echo htmlentities($row['_message']);
// PDO
$pdo = new PDO('mysql:host=example.com;dbname=database', 'user', 'password');
$statement = $pdo->query("SELECT 'Hello, dear MySQL user!' AS _message FROM DUAL");
$row = $statement->fetch(PDO::FETCH_ASSOC);
echo htmlentities($row['_message']);
// mysql
$c = mysql_connect("example.com", "user", "password");
mysql_select_db("database");
$result = mysql_query("SELECT 'Hello, dear MySQL user!' AS _message FROM DUAL");
$row = mysql_fetch_assoc($result);
echo htmlentities($row['_message']);
?>

なんとなく気になったので、Mysqlが廃止になり、Mysqli等への移行が促されているのかについて調べました。

PHPのmysqli拡張とは何か? から抜粋&意訳

MySQL改善版(improved)拡張機能として知られているmysqi拡張機能は、MySQL 4.1.3以降の新機能を最大限活用するために開発されました...

  • オブジェクト指向インターフェース
  • プリペアードステートメント対応
  • マルチステートメント対応
  • トランザクション対応
  • デバッグがより便利に
  • 埋め込みサーバー対応

一番は、あんまりにもコードがレガシーなので書き直したかった。次に、プリペアードステートメントに対応させたかったということでしょうか。

MySQL 4.1.xとは?
2004年10月 - Version 4.1 プロダクションリリース。ベータ版は2004年6月にリリース。R木、B木、サブクエリー、prepared statements搭載。






プレスリリース

人気ブログ記事

採用情報

最新ブログ記事








ページの先頭へ