Доброе утро!

Есть скрипт добавляющий вопрос в базу данных:
$sql="INSERT IGNORE INTO questionsandanswers(date, name, email, subject, msg, info) VALUES (NOW(),'$name', '$email', '$subject','$comments','$info';)";
$addVerify=mysql_query ($sql);


Нужно выбрать запись, которую только что добавили, для дальнейших манипуляций

$msgInfo =mysql_fetch_array(mysql_query("select * FROM questionsandanswers WHERE date=
NOW() ";));

Я так понимаю, способ выбирать записи по времени, не правильный.

Тогда как выбрать именно ту запись, которую только что добавили?


@темы: База данных, PHP

Комментарии
28.12.2011 в 08:46

Нашла такой способ найти id только что добавленной записи

$sql="INSERT IGNORE INTO questionsandanswers(date, name, email, subject, msg, info) VALUES (ADDDATE(NOW(), INTERVAL -1 hour),'$name', '$email', '$subject','$comments','$info')";
$addVerify=mysql_query ($sql);
$id_last=mysql_result(mysql_query ("SELECT LAST_INSERT IGNORE_ID()"),0);

И по этому id выбрать всю запись:

$msgInfo =mysql_fetch_array(mysql_query("select * FROM questionsandanswers WHERE id=$id_last"));
28.12.2011 в 09:30

Торговец знаниями
Во-первых, можно сделать так:
select * from questionsandanswers where max(date)
Во-вторых, второй запрос можно сделать в одну операцию:
select * from questionsandanswers where id=last_insert_id()
В-третьих, можно объединить и сделать в качестве параметра max(id).
28.12.2011 в 09:32

Торговец знаниями
Кстати говоря, не совсем корректно объединять mysql_fetch_array и mysql_query в одну инструкцию, потому как вызов mysql_query мог завершиться ошибкой, в этом случае не будет валидного ресурса для mysql_fetch_array.
28.12.2011 в 09:44

Крайне злопамятное хамло ;)
Сразу после инсерта:
$id_last = mysql_insert_id();
28.12.2011 в 10:51

alhames.ru
mysql_insert_id();
Угу, тоже так делаю.
По сути это эквивалентно mysql_result(mysql_query ("SELECT LAST_INSERT IGNORE_ID()"),0)
28.12.2011 в 11:23

alhames, tven, Co0L, спасибо!