Аватар для malor
48 / 44 / 3
Регистрация: 02.07.2007
Сообщений: 2,573

LAST_INSERT_ID() иногда возвращает ноль. Это не хорошо

04.07.2013, 03:14. Показов 5426. Ответов 5
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Создается запись в БД. Сразу после этого пытаемся получить её ID:

PHP
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
  $SQL = ' SELECT LAST_INSERT_ID() AS last_id ';
  $st = $db->query($SQL);
 
  $rowcount = $st->rowCount();
  if ($rowcount == 0)
  {
    echo 'Не получили ID последней вставленной записи.';
    exit;
  }
 
  $st->setFetchMode(PDO::FETCH_ASSOC);
  $row = $st->fetch();
  if ($row)
  {
    $inserted_id = $row['last_id'];  
  }      
 
  $newconsultation = 'Location: add_cons.php?id_man='.$inserted_id;
  header($newconsultation);
Так вот почему-то $inserted_id бывает равна нулю. Хотя в большинстве случаев все нормально, адекатный ID возвращается.
Инет усеян вопросами про то, отчего "LAST_INSERT_ID()" возвращает 0. Причем автоинкрементный столбец есть в таблице.
Пишут, что MySQL успевает разорвать одно соединение, и создать новое, а в этом новом нет памяти о прошлом, поэтому и ноль.

Где-то советуют сразу объединить текст INSERT-запроса и запроса про "LAST_INSERT_ID()", разделив их точкой с запятой.

Но четкого ответа нет. Это ж ключевой вопрос использования связки MySQL+PHP.
Не может не быть решения.

MySQL 5.5.29
0
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
04.07.2013, 03:14
Ответы с готовыми решениями:

LAST_INSERT_ID всегда возвращает 0
что я делаю не так? MySQLQuery.SQL.Text := 'INSERT INTO docs (sid, name, ext, data) VALUES (:SID,:NAME,:EXT,:DATA)'; ...

LAST_INSERT_ID() возвращает 0 когда полно данных в таблице
Не знаю почему LAST_INSERT_ID() возвращает 0 после вставки в таблицу данных последний индекс больше 300. Что я не так делаю? На...

Почему программа иногда возвращает не нулевой результат, а иногда нуль?
С чем подобное может быть связана?

5
 Аватар для Dolphin
814 / 797 / 201
Регистрация: 21.09.2012
Сообщений: 2,656
04.07.2013, 06:20
PHP
1
$SQL = ' SELECT MAX(`id`) AS `last_id` FROM `table_name`';
0
 Аватар для malor
48 / 44 / 3
Регистрация: 02.07.2007
Сообщений: 2,573
04.07.2013, 12:43  [ТС]
А что если другие пользователи, работающие с сайтом вклинятся между вставкой (записи, INSERT-ом) и получением MAX(`id`)?
0
 Аватар для Dolphin
814 / 797 / 201
Регистрация: 21.09.2012
Сообщений: 2,656
04.07.2013, 12:52
если используешь PDO то для него есть такая штука
PHP
1
$lastId = $dbh->lastInsertId();
0
 Аватар для malor
48 / 44 / 3
Регистрация: 02.07.2007
Сообщений: 2,573
04.07.2013, 12:55  [ТС]
С этой штуки всё и начиналось. Она выдавала иногда 0.
0
 Аватар для Vovan-VE
13210 / 6599 / 1041
Регистрация: 10.01.2008
Сообщений: 15,069
04.07.2013, 16:18
malor, У Вашей проблемы полностью отсутствует предыстория. Сразу раз - и финал. Без предыстории можно сказать "да, такое поведение является нормальным для некоторых ситуаций". Так что либо изложите предысторию, либо изучайте документацию на предмет нюансов, которые уместны в Вашем случае:
http://dev.mysql.com/doc/refma... -insert-id
http://dev.mysql.com/doc/refma... rt-id.html
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
04.07.2013, 16:18
Помогаю со студенческими работами здесь

Иногда звук не хорошо работает на компьютере
я перезагружаю компьютер и звук становится как обычно материнская плата ASUS P8P67 Windows 7 67 bit максимальная

В типе float иногда возвращает -0
Иногда на экран выводится -0,000, если точность 3 стоит. Тип float. о чем это может свидетельствовать? Неужто оо очень малом числе? ...

Now().DateString() иногда возвращает пустую строку
Добрый день! В программе предусмотен вывод информации о дате и времени Информацию получаю так TDateTime NowTime = Now(); ...

fwrite, возвращает ноль, хотя...
FILE *h; if ((h = fopen("1.p", "w")) == NULL) {printf("Can't create 1.p.\n");exit(1);} char buff; k+=size; ...

Функция (int) возвращает ноль
Добрый день! Пишу скрипт корзины, столкнулся с таким вопросом. Я делаю изменение кол-ва товара на ajax, что бы без перезагр. и у меня есть...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
6
Ответ Создать тему
Опции темы

Новые блоги и статьи
Валидация и контроль данных табличной части документа перед записью
Maks 22.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа, разработанного в КА2. Задача: контроль и валидация данных табличной части документа перед записью с учетом регламента компании. . .
Отчёт о затраченных материалах за определенный период с макетом печатной формы
Maks 21.04.2026
Отчёт из решения ниже размещён в конфигурации КА2. Задача: разработка отчёта по затраченным материалам за определённый период, с возможностью вывода печатной формы отчёта с шапкой и подвалом. В. . .
Отчёт о спецтехнике находящейся в ремонте
Maks 20.04.2026
Отчёт из решения ниже размещен в конфигурации КА2. Задача: отобразить спецтехнику, которая на данный момент находится в ремонте. Есть нетиповой документ "Заявка на ремонт спецтехники" который. . .
Памятка для бота и "визитка" для читателей "Semantic Universe Layer (Слой семантической вселенной)"
Hrethgir 19.04.2026
Сгенерировано для краткого описания по случаю сборки и компиляции скелета серверного приложения. И пусть после этого скажут, что статьи сгенерированные AI - туфта и не интересно. И это не реклама -. . .
Запрет удаления строк ТЧ документа при определённом условии
Maks 19.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "Аккумуляторы", разработанного в конфигурации КА2. У данного документа есть ТЧ, в которой в зависимости от прав доступа. . .
Модель заражения группы наркоманов
alhaos 17.04.2026
Условия задачи сформулированы тут Суть: - Группа наркоманов из 10 человек. - Только один инфицирован ВИЧ. - Колются одной иглой. - Колются раз в день. - Колются последовательно через. . .
Мысли в слух. Про "навсегда".
kumehtar 16.04.2026
Подумалось тут, что наверное очень глупо использовать во всяких своих установках понятие "навсегда". Это очень сильное понятие, и я только начинаю понимать край его смысла, не смотря на то что давно. . .
My Business CRM
MaGz GoLd 16.04.2026
Всем привет, недавно возникла потребность создать CRM, для личных нужд. Собственно программа предоставляет из себя базу данных клиентов, в которой можно фиксировать звонки, стадии сделки, а также. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru