勉強したことのメモ

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

MySQLにて直近のクエリで発行されたAUTO_INCREMENTの値を取得する方法

   2024/05/19  MySQL / MariaDB データベース

やりたかったことは「MySQLで新規登録(INSERT)なら、登録時のAUTO_INCREMENTの値(id)を特定のカラム名に入れ、編集(UPDATE)なら既存の番号(id)を特定のカラム名に入れる」ということ。以下に対応方法をメモ。

 

背景

既存の番号は編集ボタンなんかを押した時にhiddenでidの値を渡せばいいが、新規登録時にMAX(id)とかで調べた際、もし削除とかが行われていた場合MAX(id)とオートインクリメントの値が異なってしまう

そういう場合はmysql_insert_id()を用いるのが良さそう。

 

リファレンス

https://www.php.net/manual/ja/function.mysql-insert-id.php

 

対応方法

<?php
if ($mode == 'insert') { //INSERTの場合
    $sql = '
        INSERT INTO table_a
            (aaa, bbb)
        VALUES
            $aaa, $bbb;
    ';
    $row = mysql_query($sql);
    $max_id = mysql_insert_id(); //ここで取得できる
}else if( $mode == 'update' ){ //UPDATEの場合
    $max_id = $id; //hiddenとかで$seqを渡しておく
}

 

注意点

mysql_insert_idはPHP5.5.0で非推奨、PHP7.0.0で削除されたため、以下のmysqli_insert_idに変更する必要あり。

https://www.php.net/manual/ja/mysqli.insert-id.php

 - MySQL / MariaDB データベース

  関連記事

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

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

MySQLが起動も再起動もできない際の対応方法
MySQLが起動も再起動もできない際の対応方法

サイトで障害が発生した。FTPやSSH接続は出来るけどサイト自体は表示されない。 ...

MySQLでカラム数の異なるテーブルを結合する(UNION)
MySQLでカラム数の異なるテーブルを結合する(UNION)

MySQLでカラム数の異なるテーブル同士をUNIONで結合させたかった。ただ、何 ...

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

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

MySQLでtext型カラムに入っている数値をint型としてソートする
MySQLでtext型カラムに入っている数値をint型としてソートする

MySQLでtext型として指定されているカラムがあり、その中には文字列であった ...