Home > MySQL PostgreSQL > | PHP > MySQLのAUTO_INCREMENTで生成された値を簡単に取得する方法

MySQLのAUTO_INCREMENTで生成された値を簡単に取得する方法


MySQLでテーブルのキーとなるカラムをAUTO_INCREMENTにするのはよくある事で、データをInsertしてから、InsertしたレコードのAUTO_INCREMENT値を取得したいというのもよくある事で、どうやるのが一番ベストか悩んだ時期がありました。

どうやるか。

方法としては2つあり、PHPの関数 mysql_insert_id() で取得する方法と、MySQLの関数 last_insert_id() で取得する方法があります。

PHP:mysql_insert_id()

$query = 'insert into table_name ...';
$result = mysql_query($query);
$last_id = mysql_insert_id();

直近で実行された Insert 文を対象にAUTO_INCREMENT値を返してくれます。非常に簡単。

ただし、カラムの型がBIGINTの場合は、無理矢理 int に変換された値を返すため、MySQLの関数を使う必要があります。要注意。

MySQL:last_insert_id()

$query = 'insert into table_name ...';
$result = mysql_query($query);
$query = 'select last_insert_id() from table_name';
$result = mysql_query($query);
$row = mysql_fetch_array($result);

こちらはMySQLの関数なので、SQLで取得します。それを考えるとPHPを使っているのなら mysql_insert_id() で取得した方が楽かな。

Insertがかぶった場合は?

アクセス数が多く、Insertがほぼ同時に行われた場合に返ってくる値が別のレコードのものだったらどうしよう…という点については心配する必要がないです。同じクライアントからのアクセス内での直近Insertの値を返すようになっているので、それぞれ正しい値が返ってきます。

Comments:0

Comment Form

Trackbacks:0

TrackBack URL for this entry
http://blog.tofu-kun.org/mt-tb.cgi/354
Listed below are links to weblogs that reference
MySQLのAUTO_INCREMENTで生成された値を簡単に取得する方法 from Webプログラマー+WebデザイナーなZARU日記

Home > MySQL PostgreSQL > | PHP > MySQLのAUTO_INCREMENTで生成された値を簡単に取得する方法

Profile

zaru

Name : zaru

Webプログラマ+Webデザイナで、Webディレクタやってます。Twitterやっているので、ぜひフォローしてやってくださいませ。Twitter - zaru。また、そのほかのプロフィールについては、iddy - zaruを見てください。

Search
Feeds
Others

Return to page top