【转】PHP 最終挿入 ID

WBOY
WBOYオリジナル
2016-06-23 14:34:141488ブラウズ

PHP を使用して mysql を呼び出す 組み込みの LAST_INSERT_ID() 関数は、多くの人には使用されないかもしれません

実際、この 2 つの関数には違いがあります。 bigint 値の ID を返します。ただし、mysql_insert_id は int を返します。

ID が unsigned int または bigint の場合。したがって、返されたものは間違っている可能性があります。代わりに LAST_INSERT_ID() を使用してください

一部の友人は依然として 0 を返します。実際、LAST_INSERT_ID() は AUTO_INCREMENT の ID を返します。

テーブル構造に AUTO_INCREMENT が設定されていない場合は返却できません。

まだ 0 を返す人もいます。その場合は、挿入遅延関数が使用されているかどうかを確認する必要があります。この場合、即時戻り ID 値は返されません。

多くの人は、この last_insert_id を置き換えるために select max(id)... を使用することを好みます。実際、select max(id) はスレッドセーフではありません。

他のスレッドが新しいデータを挿入した可能性が非常に高いです。前回入力したIDに達すると確認できなくなります。そして、last_insert_id は mysql 接続に対応します。つまり、

は現在のスレッドに対応し、他のスレッドによって干渉されません。データベースで奇妙なエラーが発生した場合、たとえば、データ A の情報が更新されるはずが、

その結果、データ B が更新され、それが正しい場合もあれば、間違っている場合もあり、非常に混乱することになります。不正解の人が多いとき。 select max(id) を使用したかどうかを確認してください

http://www.jb51.net/article/21063.htm

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。