テクノモンキーのアプリ開発日記

テクノモンキーの開発ブログです。iOS、Android、Unity、Cocos2d-xなどアプリ開発関連のTipsやアプリ開発に役立つ情報を発信します。

【PHP】DBにレコードをINSERT後、追加したレコードのIDをすぐに取得する方法

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を返してくれるようです。

https://www.php.net/manual/ja/pdo.lastinsertid.php


レコード追加後、別のAPIを呼び出したい場面って結構あるので意外と使用頻度が高そうです。