MySQLにて直近のクエリで発行されたAUTO_INCREMENTの値を取得する方法
2024/05/19
やりたかったことは「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に変更する必要あり。
関連記事
-
-
MySQLのバックアップファイルを簡単に作成できるライブラリ「myphp-backup」の利用方法
MySQLのバックアップを取る際にadminerとかから手動で対応するのではなく ...
-
-
MySQLで大文字小文字
半角英数字のみのフォームで入力した値を検索した際、 データに差異が発生。 [Aa ...
-
-
MySQLで経度緯度から半径○Kmのデータを抽出する方法
経度と緯度をtext型として格納しているMySQLのテーブルがあり、指定した経度 ...
-
-
mysqlで正規化できない時はシリアライズ使う
アンケートか何かに機能追加している際、配列を カンマ区切りで結合して文字列でDB ...
-
-
MySQLでphpMyAdminやAdminer上だけ文字化けする場合の対応方法
レンタルサーバーのプログラムでWebページ上では文字化けしていないのに、phpM ...