Альтернатива mysql_insert_id в mysql?

#php #mysql #multithreading

#php #mysql #многопоточность

Вопрос:

Я гуглю mysql_insert_id, о проблеме потокобезопасности … …Я беспокоюсь о том, что у меня есть только один пользователь MySQL для подключения DB, поэтому я думаю, что mysql_insert_id не очень безопасен для моего приложения. Существует ли какой-либо «безопасный» метод для возврата идентификатора последней вставки из MySQL? Спасибо.

Комментарии:

1. Что вы имеете в виду под […] У меня есть только один пользователь MySQL для подключения DB, поэтому, я думаю, mysql_insert_id не очень безопасен для моего приложения […] ? Можете ли вы уточнить это?

2. @Stefan Gehrig — Я думаю, он (ошибочно) полагает, что последний идентификатор не является значением сеанса, но вместо этого он является общим для всех сеансов в зависимости от учетных данных пользователя.

Ответ №1:

Пока два потока не используют одно соединение с базой данных, вы не должны получать неправильные идентификаторы. mysql_insert_id сохраняется для каждого соединения, а не для каждого пользователя.

Ответ №2:

Более безопасного метода нет, и он вам не нужен. mysql_insert_id() в PHP or SELECT LAST_INSERT_ID() возвращает последнее ID значение для вашего текущего соединения, не для учетной записи пользователя, поэтому здесь вы в полной безопасности.

Комментарии:

1. что означает соединение …. если я отправлю запрос на вставку db, тогда у меня будет второй, который вставляется с использованием AJAX, означает ли это, что это два отдельных соединения?

2. @Ted, соединение означает соединение. При вызове mysql_connect запускается новое соединение. Это заканчивается mysql_close или когда завершается скрипт.