人力検索はてな
モバイル版を表示しています。PC版はこちら
i-mobile

PHPスクリプト内からMySQLへINSERT文でデータ登録する際、登録したデータに対してAutoIncrementで割り振られたプライマリ・キーの値を取得するにはどうしたら良いでしょうか?*扱っているのは一般ユーザーからの問合せフォームですが、プライマリ・キー以外にはデータを特定する一意のキーは無さそうです。

●質問者: dak
●カテゴリ:コンピュータ
✍キーワード:MySQL PHP スクリプト データ プライマリ
○ 状態 :終了
└ 回答数 : 5/5件

▽最新の回答へ

1 ● bell87uta
●16ポイント

http://jp.php.net/manual/ja/function.mysql-insert-id.php

PHP: mysql_insert_id - Manual

これで取得できます。

◎質問者からの返答

おお、完璧っぽいです。これ、複数ユーザーによる処理が同時発生してる場合でも、正確に自分のスクリプトが直近に処理したIDを返してくれるんでしょうか?


2 ● 犬一
●16ポイント

http://www.yahoo.co.jp/

Yahoo! JAPAN

URLはダミーで。


直前のIDを取得するにはPHPの

mysql_insert_id関数を使用します。

例:

$query = ”insert into hoge values(’’,’hoge’,12345)”;

$rs = mysql_query($query);

$id = mysql_insert_id();

◎質問者からの返答

既出ですが、サンプルコードが入ってて有用なのでポイント付けさせて頂きます。ありがとうございます!


3 ● xtra
●16ポイント

http://www.hatena.ne.jp/awindow?qid=1118811046

登録する直前のIDを取得して、それに手動でインクリメントした値を表示する、という方法ではダメですか?

◎質問者からの返答

あ、それ上手いですね!でも、やはり最初の回答と同じ、同時発生している他の処理との混同が気になります。


4 ● tomo_hiko
●16ポイント

http://www.rfs.jp/sitebuilder/sql/03/04.html

302 Found

LAST_INSERT_ID()を使ってみてはいかがでしょうか?


データを登録した際に、接続を切らず連続して、

SELECT LAST_INSERT_ID();

を発行すればよいかと思います。


上記URLの中ほどやや下に説明がありました。

◎質問者からの返答

ありがとうございます。やはり疑問点は、前に同じです。


5 ● 犬一
●25ポイント

http://netmirror.org/mirror/mysql.com/doc/mysql/ja/getting-uniqu...

2度目の回答です。

同時発生している他の処理との混同が気になるとの事なので。

この回答に対するポイントはいらないです。


MySQLサーバはクライアントからの接続要求があるとスレッドを生成し、そのスレッドがクライアントのSQLを処理します。

最後に生成されたIDはスレッドごとにサーバに保持されます。

その為、確実に自分が最後に生成したIDを返してくれます。

◎質問者からの返答

なるほど!疑問が解決しました。ポイント不要との事ですが、当然お付けします。非常に分かりやすい回答を有難うございました。

関連質問


●質問をもっと探す●



0.人力検索はてなトップ
8.このページを友達に紹介
9.このページの先頭へ
対応機種一覧
お問い合わせ
ヘルプ/お知らせ
ログイン
無料ユーザー登録
はてなトップ