挿入したレコードのIDを得る

MySQLテーブルのフィールドををAUTO_INCREMENTなど、自動的に値を設定するようにしていると、
レコード挿入後でないと分からない値があります。

その値を知るには、MySQLのLAST_INSERT_ID()関数を使用して最後に挿入したレコードの値を
得ることができます。

$db_str = "mysql://". $user . ":" . $pass . "@" . $host . "/" . $dbname;
$db = DB::connect($db_str);

$sql = "INSERT INTO my_table (name) value('hogehoge')";
$db->query($sql);

$sql = 'select LAST_INSERT_ID() id';
$data = $db->getOne($sql);
$id = $data['id'];

同時刻に複数の挿入があったとき目的のIDを得られないのでは?という心配もありますが、
このLAST_INSERTED_ID()関数は接続単位の最終挿入データを得ることができるため、
上記の一連のスクリプトの流れで最後の挿入となるので、スクリプト内で同じ接続に対して
シーケンシャルに挿入->ID取得となっていれば問題ありません。

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です

次のHTML タグと属性が使えます: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>