mysql_insert_id 関数を使用する場合、間違った操作プロセス: ページ A は id=1 の項目を挿入し、ページ B は id=2 の項目を挿入します。ページ A で mysql_insert_id を実行して取得される ID は 1 ですか 2 ですか?
ディスカッションへの返信(解決策)
ページ A は当然 1
現在のページの前のステップで実行された挿入文の ID を返す、という理解でよろしいでしょうか? W3school はあまりうまく言いません
1 でなければ、すべてを書くときに同時実行の問題を気にする必要があります。mysql_query("select LAST_INSERT_ID()");ページが 10,000 ある場合はどうなるでしょうか?それが重要なトランザクション操作である場合はどうすればよいでしょうか?データベースへのクエリはより信頼性が高くなります
ページ A の mysql_insert_id は 1 を返します
MySQL の mysql_insert_id は、サーバーにとって、大規模な同時実行状況でも MAX(id) ではなくアトミック操作です。不正確さはありません。
MySQL を見ることができます
mysql_insert_id は次のように定義されています
my_ulonglong STDCALL mysql_insert_id(MYSQL *mysql)
{
return mysql->gt;;last_used_con->;insert_id;
}
MYSQL パラメータは構造体ですこれには、データベース リンクと現在のデータベース リンクのいくつかのステータス値が含まれます。
MYSQL 構造体に insert_id があり、mysql_insert_id 関数はその構造体の値を返します。
間違いなく1、実際に操作できれば分かります