Warning: Cannot use a scalar value as an array in /home/admin/public_html/forum/include/fm.class.php on line 757
Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/include/fm.class.php on line 770
Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/topic.php on line 737 Форумы портала PHP.SU :: Как получить id, присвоенный только что вставленной строке?
Покинул форум
Сообщений всего: 139
Дата рег-ции: Янв. 2011
Помог: 0 раз(а)
Добавлю в базу данных строку "INSERT INTO table SET text='$text', user='$user' "
В таблице три поля: id, text, user.
у id стоит auto increment. Какой самый оптимальный и верный способ получить id только что записанной строки?
vectorserver
Отправлено: 03 Августа, 2012 - 20:28:03
Гость
Покинул форум
Сообщений всего: 105
Дата рег-ции: Нояб. 2011
Покинул форум
Сообщений всего: 139
Дата рег-ции: Янв. 2011
Помог: 0 раз(а)
А если просто предположить, что последний добавленный будет с максимальным id?
$id= mysql_result(mysql_query("SELECT MAX(id) FROM table"),0);
LIME
Отправлено: 03 Августа, 2012 - 20:34:25
Активный участник
Покинул форум
Сообщений всего: 10732
Дата рег-ции: Нояб. 2010
Помог: 322 раз(а)
если что я могу и еще посложнее способ подкинуть))
DelphinPRO
Отправлено: 03 Августа, 2012 - 20:52:51
Активный участник
Покинул форум
Сообщений всего: 7187
Дата рег-ции: Февр. 2012
Помог: 353 раз(а)
Dazar пишет:
А если просто предположить, что последний добавленный будет с максимальным id?
Зачем если ситуация предусмотрена разработчиками и есть специальная функция?
к тому же, на сколько я знаю, это утверждение при определенных обстоятельствах не верно. Точнее сказать не могу, но тут есть спецы по мускулу, мож объяснят.
----- Чем больше узнаю, тем больше я не знаю.
Мелкий
Отправлено: 03 Августа, 2012 - 21:53:22
Активный участник
Покинул форум
Сообщений всего: 11926
Дата рег-ции: Июль 2009 Откуда: Россия, Санкт-Петербург
Помог: 618 раз(а)
vectorserver пишет:
Точно будет уникальным
Ни в коем случае.
Dazar пишет:
А если просто предположить, что последний добавленный будет с максимальным id?
Только если вы зачем-то организуете строго последовательный доступ к базе. Иначе между запросами запросто может пройти ещё один (а то и не один) инзерт.
И это не вспоминая про репликации.
----- PostgreSQL DBA
EuGen
Отправлено: 03 Августа, 2012 - 23:15:02
Профессионал
Покинул форум
Сообщений всего: 9095
Дата рег-ции: Июнь 2007 Откуда: Berlin
Помог: 707 раз(а)
Мелкий пишет:
И это не вспоминая про репликации.
А также про то, что auto_increment далеко не всегда добавляет +1 к максимальному значению.
По теме - корректнее всего использовать mysql_insert_id как и сказано выше.
----- Есть в мире две бесконечные вещи - это Вселенная и человеческая глупость. Но насчет первой .. я не уверен.
Все гости форума могут просматривать этот раздел. Только зарегистрированные пользователи могут создавать новые темы в этом разделе. Только зарегистрированные пользователи могут отвечать на сообщения в этом разделе.