2

mysql_insert_id() が最後に挿入された ID を提供することはわかっていますが、以下の状況で問題が発生する可能性があるかどうか疑問に思っています。


UserA -> ROW を TABLE に挿入し、挿入された ID を取得する関数を呼び出します

実行日時: 2013-10-01 10:18:25

行 ID: 1


UserB -> ROW を TABLE に挿入し、挿入された ID を取得する関数を呼び出します

実行日時: 2013-10-01 10:18:26

行 ID: 2


実行時間が 1 秒だけ異なることに注意してください。

UserA が mysql_insert_id() を実行する前に、UserB が行の挿入を完了したと仮定します。

UserA はROW ID: 1またはROW ID: 2の値を取得しますか?

4

3 に答える 3

5

No.mysql_insert_id()もコネクション セーフであるため、ユーザーごとに異なる接続を使用するため、正しいデータが含まれます。

mysql_これらは推奨されていないため、使用するのは悪い考えであることに注意してください

于 2013-10-01T13:21:48.030 に答える
3

2 人のユーザーは、MySQL への異なるリソース リンクを持ちます。PHP は、$link_identifierパラメーターをオプションとして指定することでこれを行いますが、指定する必要があります。

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

必須: 関数は使用しないでくださいmysql_*。非推奨です。

于 2013-10-01T13:21:05.910 に答える
0

MySQL 接続。リンク識別子が指定されていない場合、mysql_connect() によって開かれた最後のリンクが想定されます。そのようなリンクが見つからない場合、引数なしで mysql_connect() が呼び出されたかのようにリンクを作成しようとします。接続が見つからない、または確立されていない場合は、E_WARNING レベルのエラーが生成されます。

于 2013-10-01T13:25:05.873 に答える