Автор Тема: Как узнать значения поля для новой записи?  (Прочитано 4216 раз)

0 Пользователей и 1 Гость просматривают эту тему.

Оффлайн Pr0Head

  • Members of GreenPeace
  • Постоялец
  • ***
  • Сообщений: 219
  • +0/-0
  • 2
    • Просмотр профиля
    • http://digital-market.ru
Доброго времени суток!

У меня есть форма. После того, как нажали на кнопку Sybmit,  данные из формы записываются в Мускуль (с уникальным, автоподставляемым id) и формируется страница с заполненными данные. На этой странице создается ссылка, при нажатии на которую, открывается форма для редактирования данных. То есть создается ссылка, типа <а href=>.

А как мне получить номер id? То есть, мне нужно сделать запрос на запись в Мускуль и узнать какой id присвоен именно ЭТОЙ записи. Можно конечно посчитать все кол-во записей в БД и присвоить номер последней, но это ИМХО не очень хорошо, т.к. будет дополнительная нагрузка на БД, и может получится так, что кто-то в это время добавит еще одну запись и тогда номер id может неправильно "посчитаться".

Хэлп! :)
Банк выполнил недопустимую операцию и будет закрыт!

Оффлайн fidget

  • Непоседа
  • Глобальный модератор
  • Ветеран
  • *****
  • Сообщений: 607
  • +0/-0
  • 2
    • Просмотр профиля
    • http://
Как узнать значения поля для новой записи?
« Ответ #1 : 28 Марта 2002, 13:40:40 »
last_insert_id()
только вот для того, что бы не было путаницы кто, что вставил и каком порядке, таблицу лочить надо...
На Машине Тьюринга далеко не уедешь.

Оффлайн Chs

  • Perl программер
  • Глобальный модератор
  • Ветеран
  • *****
  • Сообщений: 1108
  • +0/-0
  • 2
    • Просмотр профиля
    • http://chs.now.at/
Как узнать значения поля для новой записи?
« Ответ #2 : 28 Марта 2002, 15:26:00 »
Цитировать
last_insert_id()
только вот для того, что бы не было путаницы кто, что вставил и каком порядке, таблицу лочить надо...

Не обязательно лочить, наверное, поскольку last_insert_id поддерживается на уровне соединения.
И очень сомнительно, что в пределах одного скрипта записи добавляются вперемежку.:)
2B OR NOT 2B = FF

Оффлайн Pr0Head

  • Members of GreenPeace
  • Постоялец
  • ***
  • Сообщений: 219
  • +0/-0
  • 2
    • Просмотр профиля
    • http://digital-market.ru
Как узнать значения поля для новой записи?
« Ответ #3 : 28 Марта 2002, 16:24:55 »
Спасибо 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

но ссылка получается пустая. =(

Прочитал ман, на сайте мускуль.ком, но толком ничего не понял.
Банк выполнил недопустимую операцию и будет закрыт!

Оффлайн fidget

  • Непоседа
  • Глобальный модератор
  • Ветеран
  • *****
  • Сообщений: 607
  • +0/-0
  • 2
    • Просмотр профиля
    • http://
Как узнать значения поля для новой записи?
« Ответ #4 : 28 Марта 2002, 16:31:52 »
$sql="SELECT last_insert_id()"
На Машине Тьюринга далеко не уедешь.

Оффлайн Pr0Head

  • Members of GreenPeace
  • Постоялец
  • ***
  • Сообщений: 219
  • +0/-0
  • 2
    • Просмотр профиля
    • http://digital-market.ru
Как узнать значения поля для новой записи?
« Ответ #5 : 28 Марта 2002, 17:05:12 »
Это называется в трех соснах заблудился.

$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:
Банк выполнил недопустимую операцию и будет закрыт!

Оффлайн Fury

  • Завсегдатай
  • Пользователь
  • **
  • Сообщений: 64
  • +0/-0
  • 0
    • Просмотр профиля
Как узнать значения поля для новой записи?
« Ответ #6 : 28 Марта 2002, 17:48:51 »
Используй функцию mysql_insert_id().
Она возвратит последний сгененированный автоинкрементным полем id
Рыжая бестия

Оффлайн Chs

  • Perl программер
  • Глобальный модератор
  • Ветеран
  • *****
  • Сообщений: 1108
  • +0/-0
  • 2
    • Просмотр профиля
    • http://chs.now.at/
Как узнать значения поля для новой записи?
« Ответ #7 : 28 Марта 2002, 18:04:53 »
Цитировать
Используй функцию mysql_insert_id().
Она возвратит последний сгененированный автоинкрементным полем id

LAST_INSERT_ID() возвращает то же самое. :)
2B OR NOT 2B = FF

Оффлайн Pr0Head

  • Members of GreenPeace
  • Постоялец
  • ***
  • Сообщений: 219
  • +0/-0
  • 2
    • Просмотр профиля
    • http://digital-market.ru
Как узнать значения поля для новой записи?
« Ответ #8 : 28 Марта 2002, 18:50:05 »
Ужас! Вообщем все заработало.

Спасибо откликнувшимся. ;)

В итоге заработало так:

$sql = "INSERT INTO .......................";
$result = mysql_query($sql);
$used_id = mysql_insert_id ($db);

// Где $db = это коннект к БД.
« Последнее редактирование: 29 Марта 2002, 12:52:18 от Pr0Head »
Банк выполнил недопустимую операцию и будет закрыт!

  • Гость
Только что сам столкнулся с подобной проблемой.
В вашем обсуждении нашел ответ на мой вопрос.
Кстати, 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"];
--------------------------

 

Sitemap 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28