以下の内容はhttps://develop.hateblo.jp/entry/php-add-recoard-get-primaryより取得しました。


【PHP】DBに追加したレコードのプライマリーキーをすぐに取得する方法

https://encrypted-tbn0.gstatic.com/images?q=tbn:ANd9GcScS4wA_hHDvXFFZ3TjpEzxjO8fTpH39SDiNRpr17PhmIdfKgGDgA


PHPでDBに追加したレコードのプライマリーキーを取得する場合のメモ。


DBへのレコード追加直後にレコードを取得しようとするとPDOExceptionが発生する


サーバー側のAPI開発で、DBに追加したレコードをクライアントへ返す実装をしたいと思ったのですが、

PDOException: SQLSTATE[HY000]: General error

上記のようなエラーが出てしまいました。

調べた感じだとDBに追加したレコードをすぐに取得しようとすると発生するエラーなのかなと思います。



PDOのlastInsertId()を使えばレコード追加したプライマリーキーを取得できる


PDOのlastInsertId()を使用すれば、追加したレコードのプライマリーキーを取得できるので、
追加したレコードの情報をクライアントへ返却できそうです。


	$user_id = '1';
	$user_name='user';
	
	$dsn='mysql:dbname=app;host=localhost;charset=utf8';
	$user='dbuser';
	$password='';
	$dbh=new PDO($dsn,$user,$password);
	$dbh->setAttribute(PDO::ATTR_ERRMODE,PDO::ERRMODE_EXCEPTION);
	$sql='INSERT INTO user(user_id,name) VALUES(?,?)';
	$stmt=$dbh->prepare($sql);
	$data[]=$user_id;
	$data[]=$user_name;
	$stmt->execute($data);
	$user_code = $dbh->lastInsertId(); //追加したレコードのプライマリーキーを取得
	$dbh= null;



以上の内容はhttps://develop.hateblo.jp/entry/php-add-recoard-get-primaryより取得しました。
このページはhttp://font.textar.tv/のウェブフォントを使用してます

不具合報告/要望等はこちらへお願いします。
モバイルやる夫Viewer Ver0.14