以下を使用して joomla の拡張機能を作成しました。
$id=$database->insertid();
2 人のユーザーがサイトにログオンしている場合、データベース内で 2 つのレコードを一緒に実行すると、このステートメントはどちらの場合も同じ値を返すことを説明しました。PHP では、この問題をトランザクションで解決できます。
joomlaでこの問題を解決するにはどうすればよいですか?
以下を使用して joomla の拡張機能を作成しました。
$id=$database->insertid();
2 人のユーザーがサイトにログオンしている場合、データベース内で 2 つのレコードを一緒に実行すると、このステートメントはどちらの場合も同じ値を返すことを説明しました。PHP では、この問題をトランザクションで解決できます。
joomlaでこの問題を解決するにはどうすればよいですか?
JTable を拡張する作業中のテーブルがある場合は、オプションでその一部であるチェックアウト機能が含まれていることを確認してください。これは、コンテンツ テーブルにあるようないくつかのフィールドを追加することを意味する必要があります。これにより、2 人のユーザーが同時に同じ行を編集して競合状態が発生し、他のユーザーのデータが失われるのを防ぐことができます。
@ iacoposk8あなたの言う通り、非常に後部のケースで可能かもしれません。そのようなときは、現在ログインしているユーザー ID を SQL クエリまたは任意の場所に追加して、競合が発生しないようにしてください。私が言いたいことをあなたが理解してくれることを願っています。ありがとう
最後の挿入 ID を返す php 関数と joomla 関数の両方が mysql の実装に依存しており、mysqlは現在開いている接続に挿入された最後の ID を返すため、同時実行性は問題にならないことに注意してください。