• ベストアンサー
  • すぐに回答を!

auto_incrementの値の取りだし方

またまたお世話になります。 いつも秒殺質問ばかりしているnak205です。 いまPHPとMySQLでフォームから受付を行い、auto_incrementで発行した受付番号を受付完了画面に表示させるようなものを使っています。 そこで困っているのが、MySQLにデータをINSERTしたあと、どうやって正確にインクリメントされたばかりの受付番号を得ればいいかというところです。 データをINSERTしたあと、受付番号を得るSQLを発行してる間に他の受付が入ってしまえば数字がずれてしまいますよね。INSERTと同時にauto_incrementで出来た数字の値を得る関数がPHPかMySQL側にありますか? 受付番号だけ別テーブルに置いてauto_incrementではなく、PHPで管理したほうが良いんでしょうか?

共感・応援の気持ちを伝えよう!

  • PHP
  • 回答数1
  • 閲覧数244
  • ありがとう数1

質問者が選んだベストアンサー

  • ベストアンサー
  • 回答No.1

mysql_insert_id()は使えませんか? 使い方は参考URLをご覧ください。

参考URL:
http://jp2.php.net/manual/ja/function.mysql-insert-id.php

共感・感謝の気持ちを伝えよう!

質問者からのお礼

ありがとうございます。 あっさり出来ました。 やっぱりこれも秒殺質問でした。 またよろしくお願いします。

関連するQ&A

  • オートインクリメントの最新の値

    いずれかの方法で、オートインクリメントで記録している数字の最新のものを取得したいです。 (PHP/MySQL) 考えているのは オートインクリメントのフィールドの中から一番大きいものを取得 という方法ですが、WHEREの条件式をどのように書けばいいかがわかりません。 また、他にいい方法があれば教えていただきたいです。

    • ベストアンサー
    • MySQL
  • AUTO_INCREMENT の値をINSERT前に知りたい

    PHP(PEAR)+MYSQLでWEBアプリを作成しているのですが、AUTO_INCREMENTを設定した値をデータのINSERTを行う前に取得したいのですが、どのようにすればいいのでしょうか?INSERT後であればLAST_INSERT_ID()やmysql_insert_id()で取得できるのは分かっているのですが…。ちなみに現在のテーブル型はInnoDBです。MySQLもしくはPearの命令でお分かりになる方お教えください。よろしくお願いします。

  • auto_increment型

    phpPgAdmin上から、テーブル定義を行っています。 テーブルの中へ、auto_increment型の項目を追加したいと 考えております。 MySQLには、auto_increment型が存在しますが、PostgreSQLの場合 には、同じような型があるのでしょうか?もし、ない場合には、 一般的にどのような対応をしているのでしょうか?(例えば、 Insertする際にPGの中でincrementしているのでしょうか?) (1)auto_increment型の追加方法 (2)auto_increment型がない場合の、対処方法 以上の点に関して、お分かりになる方がいらっしゃいましたら、 ご教示をお願いいたします。

  • AUTO_INCREMENTについて教えてください

    ■質問1 PHPを使ってMySQLに接続しているのですが、 「AUTO_INCREMENT」指定しているIDの次の値を取得したいのですが、 どうすれば良いでしょうか? 用途としては、レコードを挿入する際、画像ファイルにレコードID名を付与したパスをつけたいのです。 <やりたいこと> 1.AUTO_INCREMENT指定しているIDの次の値を取得 2.画像ファイル名に付与 3.レコード挿入 この1を、どうやるか知りたいです ■質問2 「AUTO_INCREMENT」指定はどこに保存されているのでしょうか? 例えばレコードを削除した後、新たにデータ挿入する場合、 次の「AUTO_INCREMENT」値ではなく、削除した一番若い番号を利用することは可能でしょうか? ■質問3 質問2に関連しているのですが、DUMPデータを移行した際など、次の「AUTO_INCREMENT」値も新しいDBへ引き継がれるのでしょうか?

    • ベストアンサー
    • MySQL
  • DBへのinsert後のid(auto_increment)の取得

    お世話になってます。質問ばかりで恐縮ですが、お知恵をお借りしたく投函させて頂きます。 mysql_connect('localhost','root','******'); mysql_select_db('test'); $hiduke = date("y-m-d"); $sql = "insert into test_tb values(0, '$hiduke', …)";//0はフィールド名id(auto_increment属性) mysql_query($sql); 上記のようなコードにて、MySQLへデータをinsertしているのですが、このとき、auto_increment属性を持ったフィールド名(id)の番号を取得するには、どのようなコードになるのでしょうか? http://dev.mysql.com/doc/refman/4.1/ja/odbc-and-last-insert-id.html 上記マニュアルに、SELECT LAST_INSERT_ID()を使うと説明がありますが、実際のコード(PHPスクリプト)にするところまで結びつける事が出来ません。 id番号を取得し、その番号をセッションに代入させたいのです。 初歩的な質問ばかりと、お恥ずかしい限りですが、アドバイスのほど宜しくお願い申し上げます。

    • ベストアンサー
    • PHP
  • オートインクリメントの数字について

    私はアクセスを使ってデータを管理しているものです。 管理番号をオートインクリメントしてるのですが、そこで問題が発生しています。 オートインクリメントでどんどん数字が増える状態になり、データが必要なくなってしまったのでそのデータを削除しました。 次に同じテーブルに新しいデータが入ってきたので、削除した後にフィールドを追加するとオートインクリメントする管理番号が数字の1からスタートするのではなく、昔、削除したフィールド数からカウントしてしまいます。 どうかアドバイス頂けないでしょうか? お願いします。

  • DBでAUTO_INCREMENTのフィールドの最新の数値を知るには

    PHP+MySQLで開発しています。 自らがDBテーブルに書き込んだレコードの、AUTO_INCREMENT指定してある項目に設定された数値を取得したいのですが、どのようにすればいいのでしょうか。 DB指定 CREATE TABLE test( no INT NOT NULL AUTO_INCREMENT, comment TEXT, PRIMARY KEY(no) ); PHP書き込み $sql = "INSERT INTO test(comment)VALUES('いろは')"; $results = mysql_query($sql,$dbid); このとき、テーブルtestのフィールドnoに設定された数値を知るために、 今はわざわざSQL select MAX(no) from test を発行しています。 これですと、確実性に欠けますし、冗長な気がします。 他に何か効率的な方法があるような気がしますので、 質問いたしました。 よろしくお願い申し上げます。

    • ベストアンサー
    • PHP
  • オートインクリメントの削除方法について

    mysqlとphpでデータベースを作成しているのですが、オートインクリメントを用いたデータベースのデータを削除する方法がわかりません。 いい方法やいいサイトがありましたら教えてください。

  • AUTO_INCREMENTの動作について

    mysqlデータベースのAUTO INCREMENT値に関する質問です。 一時的なテーブルにデータを格納し、必要な操作が終わったらほかのテーブルに移し、一時的なテーブルの中のエントリを削除する設定なんですが、AUTO_INCREMENTは30まで登りましたが、29以下のエントリは既に削除しています。そうすると、新しいエントリを挿入すると、信じられないことに、31を識別子として挿入してくれなくて、15挿入されてしまいました! データを移すときに、その番号を識別子として使いますので大問題になっています。それはAUTO_INCREMENTの正常な動作ですか??避けることはできるのでしょうか? 詳しい方がいらっしゃいましたら、ご回答をよろしくお願いいたします。

    • ベストアンサー
    • PHP
  • 後からAUTO_INCREMENTの値を1にする方法

    MySQL=4.0.26 phpMyAdmin 2.6.4-pl4を使用しています。 AUTO_INCREMENT(int11)が自動追加されて、数値が70になったとして レコードを削除しても数値が1になりません。 プライマリーキーの関係かなと思いますが、 後からphpMyAdmin上でAUTO_INCREMENTの値を1にする方法、また、自由に数値を変更する方法を教えて頂けないでしょうか。 初期の段階でDBを構築する場合でSQLを実行する場合の AUTO_INCREMENTは解るのですが、 たとえば PRIMARY KEYを(`no`)として TYPE=MyISAM AUTO_INCREMENT=1; として、正常に利用していますが、 DB構築後、レコードが登録された後、phpMyAdmin上で レコードを削除した後またAUTO_INCREMENT=1などにする方法が 解りません。 説明べたで申し訳御座いませんが、 どうぞ宜しくお願い致します。

    • ベストアンサー
    • MySQL