用語説明
どのライブラリを選ぶか
MySQL 用 PHP ドライバの概要
PHP Manual

# どの API を使うか

PHP には、MySQL への接続用の API が三種類あります。 以下に、mysql と mysqli そして PDO が提供する API を示します。 それぞれのコードは、"example.com" 上で稼働する MySQL サーバーに ユーザー名 "user"、パスワード "password" で接続するものです。 そして、クエリを実行してユーザーにあいさつします。

例1 三種類の MySQL 用 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']);
?>`

おすすめの API

mysqli か PDO_MySQL のどちらかを使うことをおすすめします。 古い mysql 拡張モジュールを新規開発で使うのはおすすめしません。 というのも、これは PHP 5.5.0 で非推奨となり、将来的に削除される予定だからです。 詳しい機能比較を以下に示します。全体的なパフォーマンスは、どれもほぼ同じです。 拡張モジュール自体のパフォーマンスが PHP のウェブリクエストの実行時間に及ぼす影響はごくわずかで、 たいていは 0.1% 程度に過ぎません。

機能比較

| ext/mysqli | PDO_MySQL | ext/mysql
--- | --- | --- | ---
どのバージョンの PHP から使えるか | 5.0 | 5.1 | 2.0
PHP 5.x に同梱されているか | Yes | Yes | Yes
開発状況 | 進行中 | 進行中 | 保守対応のみ
ライフサイクル | 活動中 | 活動中 | 非推奨
新規開発でおすすめできるか | Yes | Yes | No
オブジェクト指向のインターフェイス | Yes | Yes | No
手続き型のインターフェイス | Yes | No | Yes
mysqlnd によるノンブロッキングな非同期クエリ | Yes | No | No
持続的接続 | Yes | Yes | Yes
文字セット | Yes | Yes | Yes
サーバーサイドのプリペアドステートメント | Yes | Yes | No
クライアントサイドのプリペアドステートメント | No | Yes | No
ストアドプロシージャ | Yes | Yes | No
複数ステートメント | Yes | Most | No
トランザクション | Yes | Yes | No
SQL によるトランザクション制御 | Yes | Yes | Yes
MySQL 5.1+ の全機能への対応 | Yes | Most | No

用語説明
どのライブラリを選ぶか
MySQL 用 PHP ドライバの概要
PHP Manual