第9章 データベース連携 / 第1回 模擬試験
PHPのPDO(PHP Data Objects)に関する次の記述のうち、正しいものはどれか。
PDOは、特定のデータベースに特化したAPIである。
PDOは、プリペアドステートメントをサポートしていない。
PDOは、異なるデータベースに対して統一されたインターフェースを提供する。
正解
PDOは、トランザクション処理をサポートしていない。
解説
PDO(PHP Data Objects)は、MySQL・PostgreSQL・SQLiteなど異なる種類のデータベースに対して共通のAPI(`prepare()`, `execute()`, `fetch()`など)でアクセスできるようにするデータベース抽象化レイヤーです。
他の選択肢が誤りである理由は次の通りです。
・PDOは特定のデータベース専用ではなく、接続先を変えても(DSNを切り替えるだけで)同じコードでアクセスできることが最大の利点です。
・PDOはプリペアドステートメント(`prepare()`/`bindValue()`/`execute()`)を標準でサポートしています。
・PDOは`beginTransaction()`, `commit()`, `rollBack()`によるトランザクション処理をサポートしています。
例:
```
$pdo = new PDO('mysql:host=localhost;dbname=test', $user, $pass);
$stmt = $pdo->prepare('SELECT * FROM users WHERE id = ?');
$stmt->execute([$id]);
```
(参照: 独習PHP 第4版 第9章 データベース連携 9.3節 PDO(PHP Data Objects) p.425〜427)