勉強したことのメモ

Webエンジニア / プログラマが勉強したことのメモ。

MySQLで直近に挿入したオートインクリメントの値と次回挿入する値を取得する方法

   2024/04/17  PHP MySQL データベース

phpとmysqliを使っている中で次回挿入するオートインクリメントの値と、前回挿入したオートインクリメントの値を取得したかった。

前回分は以前からたまに使ってたので良いんだけど、次回挿入する値のところで、max(hoge) + 1みたいな形で取得を考えたけど、行の削除が発生すると+1にならないケースがある。なので以下で対応する。

 

ソースコード

次回挿入する値を取得

//次回挿入する値を取得
$query = '
    SHOW TABLE STATUS 
    LIKE "table"
';
$row = $mysqli->query($query);
if( $row->num_rows == 0 ){ //行が見当たらない場合は1を入れる
    $count = 1;
} else {
    while ($rs = $row->fetch_array(MYSQLI_ASSOC)) {
        $count = $rs['Auto_increment']; //見当たる場合はその値を入れる
    }
}

直近で挿入した値を取得

//直近で挿入した値を取得
$query = '
    INSERT INTO table 
        (aaa, bbb) 
    VALUES 
        (aaa, bbb)
';
$row = $mysqli->query($query);
$count = $mysqli->insert_id; //ここに直近で挿入したオートインクリメント値が入る

 - PHP MySQL データベース

  関連記事

MySQLで「server has gone~」というエラーの対応方法
MySQLで「server has gone~」というエラーの対応方法

MySQLで「MySQL server has gone away」というエラー ...

MySQLのREGEXPで半角記号を検索したい場合の対応方法
MySQLのREGEXPで半角記号を検索したい場合の対応方法

MySQLのREGEXPで半角記号を検索したい場合\\を付けてエスケープしないと ...

MySQLでグループ化したものを条件で絞る(HAVING)
MySQLでグループ化したものを条件で絞る(HAVING)

正規化したテーブルがあってその中には idとtagのカラムがある。 でtagの方 ...

Codeigniter4でMySQLに接続しCRUD操作する方法
Codeigniter4でMySQLに接続しCRUD操作する方法

Codeigniter4.4.4でMySQLに接続しCRUD操作したい。また、任 ...

MySQLのtinyintのカラムにbool値を入れた場合
MySQLのtinyintのカラムにbool値を入れた場合

他所のシステムに携わることがあり中身を色々見ているとMySQLでtinyint( ...