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;