Forum Webscript.Ru
Программирование => PHP => Тема начата: cosss от 31 Января 2004, 09:52:51
-
как мне до нее добраться, пробовал mysql_insert_id()
но видно это совсем не то что надо... всегда 0 возвращает...
-
cosss
учи теорию. Таблица это множество записей, а множества по определению неупорядочены. То есть в таблице нет первой, второй, последней записи.
-
А чтобы упорядочить это множество, надо почитать про оператор ORDER BY в официальной документации (http://www.mysql.com/doc/ru/SELECT.html).
PS: Размещения одинаковых сообщений в разных разделах форума - это кросспостинг. А кросспостинг запрещен на всех цивилизованных форумах, в том числе и на этом.
-
FreeSpace
За кросспостинг извиняюсь, как сортировать табл. я знаю... Мне надо достать последнюю строку в таблице. Последнюю, в смысле при последнем INSERT запросе.
-
cosss
В таком случае, нужно было завдавать вопрос "Как достать последнюю добавленную в таблицу запись?".
Тебе может помочь только mysql_insert_id и то при условии, что эта функция вызывается сразу после того, как был выполнен запрос INSERT.
Цитата из мана:
mysql_insert_id() returns 0 if the previous query does not generate an AUTO_INCREMENT value. If you need to save the value for later, be sure to call mysql_insert_id() immediately after the query that generates the value.
Если же ты хочешь просто так, без всяких инсертов, взять и узнать, какая запись была добавлена последней, то ИМХО это невозможно.
Выход в таком случае простой - изменить структуру базы данных.
Добавить например поле timestamp, в котором хранить время добавления записи, а потом получать последнюю запись так:
SELECT * FROM table ORDER BY timestamp DESC LIMIT 1
-
Чьерт побьери, это не входило в мои планы... Хотя с этой штукой у меня даже код уменьшится, пасиб.
-
вообще-то timestamp обновляется и при редактировании записи.
Так что могут быть баги, если записи редактируются
-
Прошу прощения за неточность, я имел в виду не тип поля, его имя. Тип - INT.
-
Балин, че-то я туплю... Это ж ведь новости... Последняя по дате новость и будет та последняя которая мне нужна... Просто обратная сортировка по дате и LIMIT 1
-
всегда приятно, когда человек уходит с форума с правильным ответом и умножившимися знаниями.
при этом он не очень кочевряжится и настаивает на ответе именно в своей формулировке.
И при этом не находятся чудики, не будем показывать пальцем - кто, которые начинают отвечать на неправильный вопрос, вместо того, чтобы объяснить человеку, в чем он неправ и как сделать правильно.
cosss, чисто уточнить.
Ты до конца понял смый первый ответ Макса?
Что в базе нет первых и последних записей?
И что в случае новостей их надо сортировать именно по дате, а не по айди?
-
RomikChef
Да, я заметил как-то, что строки в таблице совсем не отсортированы, или отсортированы так как хочет мускуль. Но вот я задумался, а если я зохочу редактировать последнюю вообще затронутую хоть как-то запись, будь то UPDATE или INSERT, неужели это невозможно?
-
нет.
все критерии соритровки ты должен задавать сам.
принципиально ведь последняя добавленная не отличается от записи с самым большим числом в поле зарплата.
есть поле, по которому можно отсортировать - имеешь доступ.
непозаботился о таком поле - никаких "первых" и "последних"
-
А таймстамп меняется при UPDATE? Сорри не могу щас проверить.
-
сорри - это ты праввильно написал ;-)
меняется
но когда сможешь - обязательно почитай.
вкратце - таймстамп надо использовать ТОЛЬКО как меркер именно изменения записи. а не маркер создания записи или для хранения времени.
-
Я залез на этот топик,с единственной целью - спросить
можно ли мне еще задавать несколько вопросов сообществу этого форума? Если да то как,это зделать,
воспользоватся чужой темой или заново создать новую.
Кстати по своим вопросам я уже искал по поиску,на многих форумах,но не нашел. Видимо для того,чтобы найти,надо четко знать ,что ищешь.
Если вы меня пошлете на хутор за новой коллекцией бабочек, то значит мне туда и дорога.
-
it4all
Если твой вопрос подпадает под тему "последняя строка в таблице", то ты не просто можешь, ты должен задать его в этой теме, а не создавать новую.
Если же тема вопроса другая - создавай отдельную тему. По-моему это очевидно.
-
я думаю, что ради нескольких вопросов сообществу нало создавать новую тему по любому.