mysqli 拡張機能は、 ふたつのインターフェイスを提供しています。 手続き型とオブジェクト志向のインターフェイスです。
古い mysql 拡張機能から移行するユーザーは、 手続き型のインターフェイスを好むかもしれません。 手続き型のインターフェイスは、古い mysql 拡張機能のそれに似ています。 多くの場合、関数名はプレフィックスのみが異なりますが、 mysqli の関数によっては、最初の引数に接続ハンドルを取るものもあります。 一方で、それと一致する古い mysql 拡張機能のインターフェイスは、 オプションの接続ハンドルを最後にとるようになっています。
例1 古い mysql 拡張機能から移行する簡単な方法
<?php
$mysqli = mysqli_connect("example.com", "user", "password", "database");
$result = mysqli_query($mysqli, "SELECT 'Please do not use the deprecated mysql extension for new development. ' AS _msg FROM DUAL");
$row = mysqli_fetch_assoc($result);
echo $row['_msg'];
$mysql = mysql_connect("example.com", "user", "password");
mysql_select_db("test");
$result = mysql_query("SELECT 'Use the mysqli extension instead.' AS _msg FROM DUAL", $mysql);
$row = mysql_fetch_assoc($result);
echo $row['_msg'];
上の例の出力は以下となります。
Please do not use the deprecated mysql extension for new development. Use the mysqli extension instead.
オブジェクト指向インターフェイス
伝統的な手続き型のインターフェイスに加えて、 ユーザーはオブジェクト指向インターフェイスを選ぶことができます。 このドキュメントは、 オブジェクト志向インターフェイスも使えるように整理されています。 オブジェクト志向インターフェイスは、 目的に応じてグループ化されていますし、 使い始めるのも簡単です。リファレンスのページでは、 手続き型に加えて、オブジェクト志向インターフェイスの使い方も示しています。
この2つのインターフェイスの間に、 目立ったパフォーマンスの違いはありません。 ユーザーは、自分の好みに応じてインターフェイスを選択できます。
例2 オブジェクト志向と手続き型のインターフェイス
<?php
$mysqli = mysqli_connect("example.com", "user", "password", "database");
$result = mysqli_query($mysqli, "SELECT 'A world full of ' AS _msg FROM DUAL");
$row = mysqli_fetch_assoc($result);
echo $row['_msg'];
$mysqli = new mysqli("example.com", "user", "password", "database");
$result = $mysqli->query("SELECT 'choices to please everybody.' AS _msg FROM DUAL");
$row = $result->fetch_assoc();
echo $row['_msg'];
上の例の出力は以下となります。
A world full of choices to please everybody.
このクイックスタートガイドでは、 オブジェクト志向のインターフェイスを使います。 なぜなら、リファレンスのページが、そのように整理されているからです。
ふたつのスタイルを混ぜる
手続き型と、オブジェクト志向のやり方を切り替えることもできます。 これら両方のスタイルを混ぜることは、 コードの明確さやコーディングスタイルを統一する理由から、 推奨できません。
例3 悪いコーディングスタイル
<?php
$mysqli = new mysqli("example.com", "user", "password", "database");
$result = mysqli_query($mysqli, "SELECT 'Possible but bad style.' AS _msg FROM DUAL");
if ($row = $result->fetch_assoc()) {
echo $row['_msg'];
}
上の例の出力は以下となります。
Possible but bad style.
参照