Forum Webscript.Ru
Общие => Базы данных => Тема начата: Pr0Head от 28 Марта 2002, 13:24:23
-
Доброго времени суток!
У меня есть форма. После того, как нажали на кнопку Sybmit, данные из формы записываются в Мускуль (с уникальным, автоподставляемым id) и формируется страница с заполненными данные. На этой странице создается ссылка, при нажатии на которую, открывается форма для редактирования данных. То есть создается ссылка, типа <а href= echo "$PHP_SELF?id=$id" ?>>.
А как мне получить номер id? То есть, мне нужно сделать запрос на запись в Мускуль и узнать какой id присвоен именно ЭТОЙ записи. Можно конечно посчитать все кол-во записей в БД и присвоить номер последней, но это ИМХО не очень хорошо, т.к. будет дополнительная нагрузка на БД, и может получится так, что кто-то в это время добавит еще одну запись и тогда номер id может неправильно "посчитаться".
Хэлп! :)
-
last_insert_id()
только вот для того, что бы не было путаницы кто, что вставил и каком порядке, таблицу лочить надо...
-
last_insert_id()
только вот для того, что бы не было путаницы кто, что вставил и каком порядке, таблицу лочить надо...
Не обязательно лочить, наверное, поскольку last_insert_id поддерживается на уровне соединения.
И очень сомнительно, что в пределах одного скрипта записи добавляются вперемежку.:)
-
Спасибо fidget и Chs.
Только я никак не пойму как этим пользоваться. Не получется что-то. Делал так:
$sql = "INSERT INTO .......................";
$result = mysql_query($sql);
$sql = "LAST_INSERT_ID()";
$used_id = mysql_query($sql);
и так:
$sql = "INSERT INTO .......................";
$result = mysql_query($sql);
$used_id = mysql_query("LAST_INSERT_ID()");
а потом пытаюсь вставить на страницу:
">Edit
но ссылка получается пустая. =(
Прочитал ман, на сайте мускуль.ком, но толком ничего не понял.
-
$sql="SELECT last_insert_id()"
-
Это называется в трех соснах заблудился.
$sql = "INSERT INTO .......................";
$result = mysql_query($sql);
$sql = "SELECT last_insert_id()";
$used_id = mysql_query($sql);
echo $used_id;
На экран выводится надпись: Resource id # 2
Это не похоже на номер id :)
Да что же я делаю не так? Уже час с этим долбаюсь. :mad:
-
Используй функцию mysql_insert_id().
Она возвратит последний сгененированный автоинкрементным полем id
-
Используй функцию mysql_insert_id().
Она возвратит последний сгененированный автоинкрементным полем id
LAST_INSERT_ID() возвращает то же самое. :)
-
Ужас! Вообщем все заработало.
Спасибо откликнувшимся. ;)
В итоге заработало так:
$sql = "INSERT INTO .......................";
$result = mysql_query($sql);
$used_id = mysql_insert_id ($db);
// Где $db = это коннект к БД.
-
Только что сам столкнулся с подобной проблемой.
В вашем обсуждении нашел ответ на мой вопрос.
Кстати, LAST_INSERT_ID() тоже возвращает последний id, если присвоить алиас.
Вот мой код:
--------------------------
$sql = "INSERT INTO ....";
mysql_query($sql);
$sql="SELECT last_insert_id() as user_id";
$result=mysql_query($sql);
$row = mysql_fetch_array($result);
echo $row["user_id"];
--------------------------