AppSeedのアプリ開発ブログ

アプリ開発会社AppSeed(アップシード)開発担当のブログです。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を返してくれるようです。

PHP: PDO::lastInsertId - Manual


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