PHP PDO で INSERT 後のIDを安全に取得する

概要

PDOのプリペアドステートメントで値を渡し、同じ接続でINSERT直後にIDを取得します。複数行INSERTでは返り値の意味をDBドライバーごとに確認します。

実施例

$pdo->beginTransaction();
$stmt = $pdo->prepare('INSERT INTO entries (title) VALUES (:title)');
$stmt->execute(['title' => $title]);
$id = $pdo->lastInsertId();
$pdo->commit();

注意点

例外時はrollbackし、IDをアプリケーション側で推測しないことが重要です。

参考: 公式ドキュメント

Comments