DB(MySQL)にレコードを追加後、追加したレコードに割り振られたIDを取得して返す方法に関するメモ。
やりたいこととしては、アプリからAPIでユーザー登録を行う際、追加したレコードに自動で割り振られるID(AUTO_INCREMENT)をすぐに取得して、アプリに返したい。
【PHP】DBにレコード追加後、追加したレコードのIDをすぐに取得する方法
下記の方法で実現できました。
try
{
$dsn ='mysql:dbname=db_name;host=host_name;charset=utf8';
$user = 'user_name';
$password = 'password';
$dbh= new PDO($dsn,$user,$password);
$dbh->setAttribute(PDO::ATTR_ERRMODE,PDO::ERRMODE_EXCEPTION);
$sql='INSERT INTO user(name) VALUES(?)';
$stmt=$dbh->prepare($sql);
$data[]=$name;
$stmt->execute($data);
$id = $dbh->lastInsertId();
$dbh= null;
$datalist = array();
$data = array(
'id' => $id,
'name'=> $name,
);
array_push($datalist,$data);
}
catch(Exception $e)
{
//エラー
}
「PDO::lastInsertId」を使えばレコードの最後の行にあるIDを返してくれるようです。
PHP: PDO::lastInsertId - Manual
レコード追加後、別のAPIを呼び出したい場面って結構あるので意外と使用頻度が高そうです。