12

私のデータベースサーバーでは、「id」という自動インクリメントフィールドを持つテーブルにデータを挿入しています。次に、この最後に挿入された「id」の値を後続のステップで使用します。私はこれを使うことができます:-

  select * from table_name order by id desc limit 1; 

しかし、ここでの問題は、それがサーバーであり、さらに多くの挿入が発生する可能性があり、前述のクエリでデータを取得して別のIDを取得しようとする場合があることです。挿入と選択の間に他の挿入がある可能性があり、挿入した値を取得できません。これに対処できる方法はありますか?

前もって感謝します。

4

6 に答える 6

9

これを使って

mysql_insert_id(&mysql);  

その基本構造は

mysql_insert_id ([ resource $link_identifier = NULL ] )

前のクエリ(通常はINSERT)によってAUTO_INCREMENT列に対して生成されたIDを取得します。

またはmysqlで使用

   SELECT LAST_INSERT_ID();

ここに参照リンクがあります

http://dev.mysql.com/doc/refman/5.0/en/getting-unique-id.html

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

于 2012-09-26T11:23:53.307 に答える
4

これを試して

SELECT LAST_INSERT_ID(colid) From tablename;

ここにリンクがあります

于 2012-09-26T11:25:48.550 に答える
4

LAST_INSERT_ID()挿入直後に関数を呼び出し、IDをどこかに保存します。

于 2012-09-26T11:28:53.287 に答える
4

このmysql_insert_id()を使用します

前のINSERT操作から生成されたAUTO_INCREMENTIDを返します。

この関数は、前の操作でAUTO_INCREMENT IDが生成されない場合は0を返し、MySQL接続が失敗した場合はFALSEを返します。

于 2012-09-26T11:32:38.500 に答える
2

挿入直後にLAST_INSERT_ID()関数を呼び出すと、IDを取得でき、それを使用できます。

于 2012-10-24T05:51:31.440 に答える
1

最後に挿入されたレコードは、mysql_insert_id()を介して取得され ます。テーブルにAUTO_INCREMENT列が含まれている場合、その値が返されます。

mysql_query("INSERT INTO test(emsg,etime) values ('inserted',now())");
printf("Last inserted record has id %d\n", mysql_insert_id());
$last_id=mysql_insert_id();
echo $last_id;
?>
于 2015-04-12T06:00:16.347 に答える