PHPでMySQLデータベースとやり取りするためには、主に3つの方法があります。
それぞれの方法について特徴や使用例を紹介します。
1. MySQLi(MySQL Improved)
MySQLi(MySQL Improved)は、PHPからMySQLデータベースにアクセスするための拡張機能です。
オブジェクト指向インターフェースと手続き型インターフェースの両方を提供し、最新のMySQL機能をサポートします。
主な特徴
- オブジェクト指向と手続き型インターフェース
- プリペアドステートメント
- トランザクションサポート
- ストアドプロシージャサポート
使用例
$mysqli = new mysqli("localhost", "user_name", "user_pass", "my_db");
if ($mysqli->connect_error) {
die("接続失敗: " . $mysqli->connect_error);
}
$sql = "SELECT id, title FROM tours";
$result = $mysqli->query($sql);
while ($row = $result->fetch_assoc()) {
echo "ID: " . $row["id"] . " - Title: " . $row["title"] . "<br>";
}
$mysqli->close();
2. PDO(PHP Data Objects)
PDO(PHP Data Objects)は、PHPからデータベースにアクセスするための汎用的なインターフェースです。
PDOは、MySQLを含む多くのデータベースをサポートしており、データベースの種類に依存しないコードを書くことができます。
以前の記事にも書きましたが、私のまわりではこのPDOを利用している方が多くいらっしゃいます。
主な特徴
- 複数のデータベースサポート
- プリペアドステートメント
- トランザクションサポート
- オブジェクト指向インターフェース
使用例
try {
$pdo = new PDO("mysql:host=localhost;dbname=my_db", "user_name", "user_pass");
$pdo->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
$sql = "SELECT id, title FROM tours";
$stmt = $pdo->query($sql);
while ($row = $stmt->fetch(PDO::FETCH_ASSOC)) {
echo "ID: " . $row["id"] . " - Title: " . $row["title"] . "<br>";
}
} catch (PDOException $e) {
echo "接続失敗: " . $e->getMessage();
}
3. MySQL拡張機能(非推奨)
MySQL拡張機能は、PHPの初期バージョンから提供されていたMySQLデータベースとの接続方法です。しかし、この拡張機能はPHP 7.0.0以降で非推奨となり、現在は使用されていません。
主な特徴
- 手続き型インターフェース
- プリペアドステートメント非対応
- トランザクションサポート非対応
使用例
$link = mysql_connect("localhost", "user_name", "user_pass");
if (!$link) {
die("接続失敗: " . mysql_error());
}
mysql_select_db("my_db");
$sql = "SELECT id, title FROM tours";
$result = mysql_query($sql);
while ($row = mysql_fetch_assoc($result)) {
echo "ID: " . $row["id"] . " - Title: " . $row["title"] . "<br>";
}
mysql_close($link);
まとめ
PHPでMySQLデータベースとやり取りするためには、MySQLi、PDO、および非推奨のMySQL拡張機能の3つの方法があります。
MySQLiはMySQL専用の改良版拡張機能で、PDOは複数のデータベースをサポートする汎用的なインターフェースです。
非推奨のMySQL拡張機能は、現在は使用されていませんが、かつては広く利用されていました。
最新のPHPバージョンでは、MySQLiかPDOを使用することが推奨されます。
ウェブデザイン技能検定においても、これらの違いとそれぞれの利点を理解していることが求められます。
システムを作成されない方でも、知っておくだけで、非推奨の方法で接続されていないかどうかなどのチェックができるなど、様々なことに役立ちますので、是非知識として蓄えていただけたらと思います。