#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
или когда завершается скрипт.