Forum Webscript.Ru

Программирование => Perl => Тема начата: Ilya от 07 Августа 2001, 12:35:02

Название: Как получить последнюю запись в mySQL?
Отправлено: Ilya от 07 Августа 2001, 12:35:02
В таблице есть поле "id" (auto_increment, not_null). Когда я делаю новую запись в таблицу, id генерится автоматически. Как узнать id последней записи?
Название: Как получить последнюю запись в mySQL?
Отправлено: Realtor from Moscow от 07 Августа 2001, 23:59:41
Сорри. Я имел ввиду Перл. Просто автор вопроса (Ilia) все время о Перле спрашивал :)
Это все приколы DBD, а не мускла

[Изменено 7.8.2001 автор: Realtor from Moscow]
Название: Как получить последнюю запись в mySQL?
Отправлено: Ilya от 08 Августа 2001, 13:31:52
Извеняюсь за вопрос, но как применить last_insert_id() :), примерчик есть?
Пробовал так: "select last_insert_id() from table" - не работает.
Название: Как получить последнюю запись в mySQL?
Отправлено: AliMamed от 07 Августа 2001, 23:46:49
эээ а как в РНР это будет выглядеть? ээ в смысле это функции MySQL или DBI, DBD?
Название: Как получить последнюю запись в mySQL?
Отправлено: Realtor from Moscow от 07 Августа 2001, 23:41:46
Можно пойти другим путем.
После вставки данных INSERT INTO ... последний id можно получить:
$sth->{mysql_insertid} или $sth->{insertid} (смотря какая версия DBI и DBD):)
Название: Как получить последнюю запись в mySQL?
Отправлено: Ilya от 07 Августа 2001, 17:45:10
Просто я думал, что это можно сделать в запросе, что-то в роде этого: "select id from table where id=\'max(id)\'" (жаль что это не работает).
Название: Как получить последнюю запись в mySQL?
Отправлено: Ilya от 07 Августа 2001, 16:14:22
Во! Блин! Спасибо :)!
Только, если у меня max(id)=\'000036\', мне возвращается ответ \'36\'. Конечно, можно сделать второй запрос: "select id from table where id=\'36\'", но мне кажется, что дожно быть более рациональное решение.

$id=количество_рядов - 1; не подойдет, т.к. некоторые записи из базы будут удаляться.
Название: Как получить последнюю запись в mySQL?
Отправлено: Chs от 07 Августа 2001, 17:28:17
Цитировать
Во! Блин! Спасибо :)!
Только, если у меня max(id)=\'000036\', мне возвращается ответ \'36\'. Конечно, можно сделать второй запрос: "select id from table where id=\'36\'", но мне кажется, что дожно быть более рациональное решение.

$id=количество_рядов - 1; не подойдет, т.к. некоторые записи из базы будут удаляться.

А что не позволяет добавить нули в начало?
$id = sprintf("%06d",$id);
Название: Как получить последнюю запись в mySQL?
Отправлено: Chs от 07 Августа 2001, 14:53:00
Цитировать
я делаю так.
после добавления беру из таблицы "SELECT count(id) FROM table ";
это возвращает - количество рядов.
$id=количество_рядов - 1;


[Изменено 7.8.2001 автор: AliMamed]

"SELECT max(id) FROM table ";
Название: Как получить последнюю запись в mySQL?
Отправлено: AliMamed от 07 Августа 2001, 13:01:30
(количество записей в таблице)-1
Название: Как получить последнюю запись в mySQL?
Отправлено: Ilya от 07 Августа 2001, 13:34:05
А по подробней мона? Хотелось бы при добавлении новой записи получить в ответ ее id.
Название: Как получить последнюю запись в mySQL?
Отправлено: AliMamed от 07 Августа 2001, 14:14:54
я делаю так.
после добавления беру из таблицы "SELECT count(id) FROM table ";
это возвращает - количество рядов.
$id=количество_рядов - 1;


[Изменено 7.8.2001 автор: AliMamed]
Название: Как получить последнюю запись в mySQL?
Отправлено: Realtor from Moscow от 08 Августа 2001, 00:23:30
2Ali: в Пхп есть функция mysql_insert_id().
При том, она есть начиная с php 3.0 :)
И наконец, есть внутренныя функция MySQL last_insert_id().
Название: Как получить последнюю запись в mySQL?
Отправлено: от 17 Августа 2001, 16:44:07
create table a(id int not null primary key auto_increment, name text)

insert into a values(null, \'name\')

select last_insert_id()

Результат 1.