Вопрос относительно приложения mysql_insert_id () в моем коде - PullRequest
0 голосов
/ 04 июня 2010

У меня есть страница, на которой есть цикл if...else для обработки входных данных, при отправке эта страница переворачивается два раза, то есть при нажатии кнопки «Продолжить» и во второй раз «Добавить в корзину»«.... Теперь в этом случае, когда нажимается кнопка« Продолжить », выполняется цикл if, в который данные вставляются в базу данных, и при обновлении я получаю отображение всех входных данных и на этот раз другойнажата кнопка «Добавить в корзину» .. когда нажимается «Добавить в корзину», код, включенный в else условие / часть цикла выполняется ..

Теперь у меня такой вопрос, как будто данные изначально вставленыв If части, а затем выполняется else, поэтому я могу использовать функцию mysql_insert_id() в другой части для извлечения данных, последних вставленных в if часть?

Ниже приведен типкод, о котором я говорю:

If(Button Continue is clicked)
{
  insert query for a product table......
}
else Button Add to Cart is Clicked
{
  mysql_insert_id(); to fetch last id inserted in the above above loop/condition.. 
}

Так можно ли получить последний вставленный идентификатор в else части?

Ответы [ 2 ]

1 голос
/ 04 июня 2010

так может ли получить последний вставленный идентификатор в другой части?

Ты не можешь. Единственное место, где вы должны пытаться получить insert_id - это сразу после выполнения INSERT. Никогда не следует хранить данные, специфичные для транзакции, в сеансе, поэтому, если у вас есть несколько идентификаторов вставки и вам необходимо передавать эту информацию между различными страницами, тогда записи должны ссылаться на одну «основную» запись (например, корзину покупок), поскольку она не изменяется время жизни было бы безопасно хранить идентификатор для этой записи в сеансе.

С

1 голос
/ 04 июня 2010

Если я понимаю ваш сценарий, то нет. mysql_insert_id (и его двоюродный брат mySQL LAST_INSERT_ID()) вернет последний действительный идентификатор вставки только для текущего соединения . Это означает, что если вы перейдете на следующую страницу, будет установлено новое соединение и insert_id() не будет работать.

Обходной путь может заключаться в том, чтобы вставить идентификатор вставки в переменную сеанса сразу после выполнения запроса - тогда он будет доступен на других страницах. (Просто будьте осторожны, когда у пользователя открыто несколько вкладок / окон, и он делает два заказа одновременно - убедитесь, что вы используете какой-то идентификатор для каждого процесса бронирования.)

...