第9章 データベース連携 / 第5回 模擬試験

PHPのオートインクリメント値の取得に関する次の記述のうち、正しいものはどれか。

PDOでは、直前の`INSERT`で採番されたオートインクリメント値を`lastInsertId()`メソッドで取得できる。 正解
オートインクリメント値は`fetchAll()`メソッドで取得する。
オートインクリメント値はSQL文の`SELECT COUNT(*)`でのみ取得可能である。
PDOにはオートインクリメント値を取得する機能が存在しない。
解説
PDOの`lastInsertId()`メソッドを使うと、直前に実行した`INSERT`文によってテーブルの自動採番(オートインクリメント)列に割り当てられた値(多くの場合は主キー)を取得できます。 他の選択肢が誤りである理由は次の通りです。 ・`fetchAll()`は`SELECT`文の結果セットを取得するためのメソッドで、オートインクリメント値の取得とは別の用途です。 ・`SELECT COUNT(*)`はテーブルの件数を数える集計処理であり、直前に挿入されたレコードの正確なID取得には使えません。 ・PDOには`lastInsertId()`というオートインクリメント値取得専用のメソッドが用意されています。「機能が存在しない」は誤りです。 例: ``` $pdo->exec("INSERT INTO users (name) VALUES ('Taro')"); $newId = $pdo->lastInsertId(); echo $newId; // 新しく採番されたid ``` (参照: 独習PHP 第4版 第9章 データベース連携 9.5.3節 オートインクリメント値を取得する p.443)