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でユニークキーをはる
MySQLでseqとcodeみたいなものをあわせて ユニークキーをはりたかった。 ...
-
MySQLでIPアドレスを数値として入れると変な値になる場合の対処方法
MySQLでIPアドレスをINET_ATON関数を用いてINT型に変換し格納する ...
-
MySQLでカラム内容によって条件分岐させたい場合の対応方法
MySQLでカラムの内容によって条件を分岐させたかった。またPHPで処理するので ...
-
MySQLでデータがあれば上書き、無ければ挿入する
既存のソースを編集時に「REPLACE INTO~~」 という見たことの無いSQ ...
-
MySQLのバイナリログ(/var/lib/mysql/binlog)を適切に削除する方法
レンタルしているVPS内のファイルを整理していると「/var/lib/mysql ...