3月 192013
 

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取得となっていれば問題ありません。