第9章 データベース連携 / 第2回 模擬試験
PDOを使ったデータベース接続に関する次の記述のうち、誤っているものはどれか。
PDOのインスタンス生成には接続先DSN・ユーザー名・パスワードを指定する。
接続に失敗すると`PDOException`がスローされる。
PDOは特定のデータベース(MySQLのみ)専用のクラスである。
正解
トランザクションは`beginTransaction()`、`commit()`、`rollBack()`で制御する。
解説
PDOは特定のデータベース専用のクラスではなく、MySQL・PostgreSQL・SQLiteなど複数の種類のデータベースに対して統一されたAPIでアクセスできるようにする、データベース抽象化レイヤーです。「MySQLのみ専用」という記述は誤りです。
他の選択肢が正しい理由は次の通りです。
・PDOのインスタンスは`new PDO($dsn, $username, $password)`のように、接続先を示すDSN、ユーザー名、パスワードを指定して生成します。
・接続に失敗すると、`PDOException`という例外がスローされます(`try-catch`で捕捉して処理するのが一般的です)。
・トランザクションは`beginTransaction()`で開始、`commit()`で確定、`rollBack()`で取り消します。
例:
```
try {
$pdo = new PDO('mysql:host=localhost;dbname=test', 'user', 'pass');
} catch (PDOException $e) {
// 接続エラー処理
}
```
(参照: 独習PHP 第4版 第9章 データベース連携 9.3節 データベース抽象化レイヤー p.425〜427)