HOME FORUMS MEMBERS RECENT POSTS LOG IN  
× Авторизация
Имя пользователя:
Пароль:
Нет аккаунта? Регистрация
Баннер 1   Баннер 2
НОВЫЕ ТОРГОВАЯ НОВОСТИ ЧАТ
loading...
Скрыть
Вернуться   ANTICHAT > ПРОГРАММИРОВАНИЕ > PHP
   
Ответ
 
Опции темы Поиск в этой теме Опции просмотра

трабла с LAST_INSERT_ID в MySQL
  #1  
Старый 11.03.2009, 20:19
159932
Постоянный
Регистрация: 28.09.2007
Сообщений: 820
С нами: 9799586

Репутация: 1385


По умолчанию трабла с LAST_INSERT_ID в MySQL

версия мускула - 5.0.51b
версия пхп - 5.2.6
ос - xp sp3

проблемма с данной ф-ией, постоянно возвращает ноль.

почитал енг форумы, такая проблемма возникает у многих на вин, но никто дельного ответа так и не дал .. у некоторых проблемма только в 98м или 2к, а в xp всё гут ..

ктото сталкивался с данной проблеммой ?
что можно сделать?
 
Ответить с цитированием

  #2  
Старый 11.03.2009, 20:45
Pashkela
Динозавр
Регистрация: 10.01.2008
Сообщений: 2,841
С нами: 9649706

Репутация: 3338


По умолчанию

не?

Цитата:
If a table contains an AUTO_INCREMENT column and INSERT ... UPDATE inserts a row, the LAST_INSERT_ID() function returns the AUTO_INCREMENT value. If the statement updates a row instead, LAST_INSERT_ID() is not meaningful. However, you can work around this by using LAST_INSERT_ID(expr). Suppose that id is the AUTO_INCREMENT column. To make LAST_INSERT_ID() meaningful for updates, insert rows as follows:
INSERT INTO table (a,b,c) VALUES (1,2,3)
ON DUPLICATE KEY UPDATE id=LAST_INSERT_ID(id), c=3;
в смысле причина типа здесь:

Цитата:
if a table contains an AUTO_INCREMENT column and INSERT ... ON DUPLICATE KEY UPDATE updates (rather than inserts) a row, the value of LAST_INSERT_ID() is not meaningful
типо если в табле есть AUTO_INCREMENT и INSERT ... ON DUPLICATE KEY UPDATE (не INSERT), то типо будет хрень возвращать, тогда надо типо:

LAST_INSERT_ID(id)

в смысле указывать конкретную колонку типо
 
Ответить с цитированием

  #3  
Старый 11.03.2009, 20:47
Chaak
Познавший АНТИЧАТ
Регистрация: 01.06.2008
Сообщений: 1,047
С нами: 9443906

Репутация: 3313


По умолчанию

SELECT LAST_INSERT_ID(id) FROM payments
 
Ответить с цитированием

  #4  
Старый 11.03.2009, 20:51
159932
Постоянный
Регистрация: 28.09.2007
Сообщений: 820
С нами: 9799586

Репутация: 1385


По умолчанию

пробовал LAST_INSERT_ID(id) .. понулям.

это автоинкримент и примари.

LAST_INSERT_ID(id) - возвращает только не ноль, а еденицу .. хотя записей много больше.

Последний раз редактировалось 159932; 11.03.2009 в 20:57..
 
Ответить с цитированием

  #5  
Старый 11.03.2009, 21:03
Pashkela
Динозавр
Регистрация: 10.01.2008
Сообщений: 2,841
С нами: 9649706

Репутация: 3338


По умолчанию

Цитата:
last_insert_id() такая конструкция может возвращать 0 цитирую книгу "возвращает значение функции auto_increment, которое было сгенерировано последним во время текущего сеанса работы сервера "
т.е. если с момента вставки вы гасили сервер то будет 0

проверь, не разрываешь ли ты соединение в процессе вставки и получения этого last_insert_id() , т.е. типо это все дожно быть одновременно в течении одного сеанса

Хреновые клиенты как правило выполняют каждый запрос в своем соединении. Поэтому и last_insert_id() нулевой. Так что зайдите ка лучше в mysql.exe и попробуйте оттуда.

Для проверки можете открыть два клиента, вставить в одном строку и выполнить в обоих
select last_insert_id()
получите в одном случае N во втором 0
Кароче хз
 
Ответить с цитированием

  #6  
Старый 12.03.2009, 02:49
159932
Постоянный
Регистрация: 28.09.2007
Сообщений: 820
С нами: 9799586

Репутация: 1385


По умолчанию

топик можно закрыть.
 
Ответить с цитированием

  #7  
Старый 12.03.2009, 03:03
Pashkela
Динозавр
Регистрация: 10.01.2008
Сообщений: 2,841
С нами: 9649706

Репутация: 3338


По умолчанию

дык если решил - поделиться не вредно
 
Ответить с цитированием

  #8  
Старый 12.03.2009, 03:13
159932
Постоянный
Регистрация: 28.09.2007
Сообщений: 820
С нами: 9799586

Репутация: 1385


По умолчанию

саму траблу с данной ф-ие не решил ..
но я изначально ступил .. сделал иначе просто.
сделал desc + limit
 
Ответить с цитированием

  #9  
Старый 12.03.2009, 09:23
Doom123
Постоянный
Регистрация: 11.11.2006
Сообщений: 834
С нами: 10262314

Репутация: 668


По умолчанию

кому интересно вот пральный ответ

SELECT LAST_INSERT_ID(id) AS `lid` FROM `news` WHERE 1 ORDER BY `lid` DESC LIMIT 1
 
Ответить с цитированием
Ответ





Здесь присутствуют: 1 (пользователей: 0 , гостей: 1)
 


Быстрый переход




ANTICHAT ™ © 2001- Antichat Kft.

×

Создать сделку

Продавец: ник или ID

Название сделки:

Сумма USDT:

Срок сделки, дней:

Кто платит комиссию:

Условия сделки:

После создания сделки средства будут зарезервированы в холде до завершения сделки.

×

Мои сделки

Загрузка...
×

Сделка


Загрузка чата...