ANTICHAT.XYZ    VIDEO.ANTICHAT.XYZ    НОВЫЕ СООБЩЕНИЯ    ФОРУМ  
Баннер 1   Баннер 2
Antichat снова доступен.
Форум Antichat (Античат) возвращается и снова открыт для пользователей. Здесь обсуждаются безопасность, программирование, технологии и многое другое. Сообщество снова собирается вместе.
Новый адрес: forum.antichat.xyz
Вернуться   Форум АНТИЧАТ > Программирование > PHP, PERL, MySQL, JavaScript
   
Ответ
 
Опции темы Поиск в этой теме Опции просмотра

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

Репутация: 1385


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

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

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

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

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

  #2  
Старый 11.03.2009, 20:45
Аватар для Pashkela
Pashkela
Динозавр
Регистрация: 10.01.2008
Сообщений: 2,841
Провел на форуме:
9220514

Репутация: 3338


Отправить сообщение для Pashkela с помощью ICQ
По умолчанию

не?

Цитата:
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
Chaak
Познавший АНТИЧАТ
Регистрация: 01.06.2008
Сообщений: 1,047
Провел на форуме:
5321514

Репутация: 3313


Отправить сообщение для Chaak с помощью ICQ
По умолчанию

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

  #4  
Старый 11.03.2009, 20:51
Аватар для 159932
159932
Постоянный
Регистрация: 28.09.2007
Сообщений: 820
Провел на форуме:
6722038

Репутация: 1385


По умолчанию

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

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

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

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

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

Репутация: 3338


Отправить сообщение для Pashkela с помощью ICQ
По умолчанию

Цитата:
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
159932
Постоянный
Регистрация: 28.09.2007
Сообщений: 820
Провел на форуме:
6722038

Репутация: 1385


По умолчанию

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

  #7  
Старый 12.03.2009, 03:03
Аватар для Pashkela
Pashkela
Динозавр
Регистрация: 10.01.2008
Сообщений: 2,841
Провел на форуме:
9220514

Репутация: 3338


Отправить сообщение для Pashkela с помощью ICQ
По умолчанию

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

  #8  
Старый 12.03.2009, 03:13
Аватар для 159932
159932
Постоянный
Регистрация: 28.09.2007
Сообщений: 820
Провел на форуме:
6722038

Репутация: 1385


По умолчанию

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

  #9  
Старый 12.03.2009, 09:23
Аватар для Doom123
Doom123
Постоянный
Регистрация: 11.11.2006
Сообщений: 834
Провел на форуме:
3941248

Репутация: 668


Отправить сообщение для Doom123 с помощью ICQ
По умолчанию

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

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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Установка MySQL 5 и phpMyAdmin D=P=CH= MOD= Чужие Статьи 1 05.10.2006 14:16
SQL injection в MySql сервере версии 3,x bandera Чужие Статьи 3 04.06.2006 16:17
Общие Рекомендации Защиты (MySQL и SQL Web-интерфейс) k00p3r Чужие Статьи 0 13.06.2005 11:22
Защищаем MySql. Шаг за шагом k00p3r Чужие Статьи 0 13.06.2005 11:18
SQL инъекция в сервере MySQL k00p3r Чужие Статьи 0 12.06.2005 12:41



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


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




ANTICHAT.XYZ