Модераторы: skyboy, MoLeX, Aliance, ksnk
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> не работает запрос MySQL, select * from t_adv order by id_adv desc 
:(
    Опции темы
begin
Дата 18.5.2007, 10:59 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 415
Регистрация: 16.5.2007

Репутация: нет
Всего: нет



Мне нужно брать номер последней вставленной записи в таблице t_avd , чтобы использовать его для вставки в другую таблицу.
Запрос выглядит так (нашел на этом форуме):
Код

$query="select * from t_adv order by id_adv desc limit 1";
$result=mysql_query($query, $db) or die(mysql_error());
$res=mysql_fetch_array($result);
$opt=$rez['id_adv'];

Так вот вместо последнего номера вставляется ноль! Если пишу после:
Код

$opt=$rez['id_adv'];
строку:
echo $opt;

то ничего не выводит.
Тип поля id_adv в таблице t_adv и в той таблице куда я его пытаюсь вставить, SMALLINT.
Никаких сообщений об ошибке не выводится.
Подскажите, где ошибка?
PM MAIL   Вверх
BuShaRt
Дата 18.5.2007, 11:12 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1391
Регистрация: 29.6.2006

Репутация: нет
Всего: 6



mysql_insert_id --  Возвращает ID, сгенерированный при последнем INSERT-запросе. 
PM MAIL   Вверх
Kesh
Дата 18.5.2007, 11:25 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Эксперт
Сообщений: 2488
Регистрация: 31.7.2002
Где: Германия, Saarbrü cken

Репутация: 5
Всего: 54



Попробуй
Код

$opt=$rez["id_adv"];



--------------------
user posted image
PM MAIL WWW ICQ Skype   Вверх
BuShaRt
Дата 18.5.2007, 11:42 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1391
Регистрация: 29.6.2006

Репутация: нет
Всего: 6



Kesh, 
Абсолютно идентичные записи, причем вариант begin валидней...
К тому же, что тут пробывать, если решение задачи изначально не верно...

Добавлено через 4 минуты и 31 секунду
И раз уж если рассматривать задачу, то лучше запускать цикл, даже если в массиве предполагаеть один элимент...
Хотя бы для читабильности кода, я уж молчу, что это поможет при откладке и т.п.
Код

while ($val = mysql_fetch_array($result)){
    print $val['id_adv'];
}

PM MAIL   Вверх
mishaSL
Дата 18.5.2007, 13:49 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Участник Клуба
Сообщений: 1046
Регистрация: 10.1.2007
Где: Санкт-Петербург

Репутация: 7
Всего: 54



begin, покажите структуру таблички.


--------------------
Лучший способ научиться программированию - это посмотреть как это делают другие...
PM MAIL   Вверх
begin
Дата 22.5.2007, 20:29 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 415
Регистрация: 16.5.2007

Репутация: нет
Всего: нет



Цитата(BuShaRt @ 18.5.2007,  11:12)
mysql_insert_id --  Возвращает ID, сгенерированный при последнем INSERT-запросе.

Вот это:
Код

while ($val = mysql_fetch_array($result)){
    print $val['id_adv'];
}

снова ничего не вывело!
Насчет:
Код

mysql_insert_id

расскажите, как именно использовать в пхп - я не знаю синтаксис.
А вот структура таблицы t_adv:
Код

id_adv    SMALLINT key autoincrement
text    TEXT
name    SHAR (50)
coment    SMALLINT
pos    SMALLINT
alb    TEXT
photo    TEXT
count    SMALLINT
last    DATE

В скрипте я сначала вставляю в эту таблицу новую запись:
Код

$query="insert into t_adv (id_adv, text, name, coment, pos, alb, photo, count, last) values (NULL, '$text', '$nameadv', '0', '$pos', '$album', '$photo', '0', '07.05.20')";
$result=mysql_query($query, $db) or die(mysql_error());

(причем все вставляется правильно!)
А потом мне нужен id_adv только что вставленной записи.
Результат я уже описал выше  smile 
PM MAIL   Вверх
xolod
Дата 22.5.2007, 21:27 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 148
Регистрация: 24.5.2005
Где: Когда: Что:

Репутация: нет
Всего: 13



Цитата(begin @  22.5.2007,  20:29 Найти цитируемый пост)
использовать в пхп - я не знаю синтаксис

"Еще вчера", "специально для вас" был открыт сайт  http://ru2.php.net/manual/ru/index.php.

Код

SELECT LAST_INSERT_ID() FROM `t_adv`

Даст список последних вставленных полей с флагом AUTO_INCREMENT.
Выполнять этот запрос надо в том же соединении, в котором данные вставляются, иначе будете нолики получать.

Цитата(BuShaRt @  18.5.2007,  11:12 Найти цитируемый пост)
mysql_insert_id

Бяка, фу, не кошерно, моветон и c BigInt может не работать.
PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | PHP: Базы Данных | Следующая тема »


 




[ Время генерации скрипта: 0.0646 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.