За последние 24 часа нас посетили 33055 программистов и 1756 роботов. Сейчас ищут 883 программиста ...

Запись в БД (auto_increment)

Тема в разделе "PHP для новичков", создана пользователем GvOzD, 14 мар 2008.

Статус темы:
Закрыта.
  1. GvOzD

    GvOzD Активный пользователь

    С нами с:
    16 фев 2007
    Сообщения:
    103
    Симпатии:
    0
    Есть таблица с полем id auto_increment , можно ли перед записью в эту таблицу узнать какой id получит эта запись???
     
  2. Elkaz

    Elkaz Старожил
    Команда форума Модератор

    С нами с:
    26 июн 2006
    Сообщения:
    3.373
    Симпатии:
    0
    Адрес:
    Баку, Азербайджан
    GvOzD
    Можно, вытащив ID последней записи из таблицы
     
  3. Sergey89

    Sergey89 Активный пользователь

    С нами с:
    4 янв 2007
    Сообщения:
    4.796
    Симпатии:
    0
    Можно узнать, какой ID получила запись после вставки.
     
  4. Hight

    Hight Старожил
    Команда форума Модератор

    С нами с:
    5 мар 2006
    Сообщения:
    7.153
    Симпатии:
    0
    Адрес:
    из злой параллельной вселенной
    Надо делать так, чтобы этого не потребовалось.
     
  5. GvOzD

    GvOzD Активный пользователь

    С нами с:
    16 фев 2007
    Сообщения:
    103
    Симпатии:
    0
    Это понятно , но проблема заключается именно в том что это нужно сделать до записи.У меня две таблицы и в них обоих есть поля которые вяжут их между собой по id'шникам
     
  6. GvOzD

    GvOzD Активный пользователь

    С нами с:
    16 фев 2007
    Сообщения:
    103
    Симпатии:
    0
    Иначе у меня скрипт отягощается ещё одним запросом к БД , а у меня и так тьма )))
     
  7. Hight

    Hight Старожил
    Команда форума Модератор

    С нами с:
    5 мар 2006
    Сообщения:
    7.153
    Симпатии:
    0
    Адрес:
    из злой параллельной вселенной
    Ну раз их и так тьма, то +- один это не проблема.
     
  8. Sergey89

    Sergey89 Активный пользователь

    С нами с:
    4 янв 2007
    Сообщения:
    4.796
    Симпатии:
    0
    Этого не надо хотеть. После вставки, ради бога. Но не до!
     
  9. GvOzD

    GvOzD Активный пользователь

    С нами с:
    16 фев 2007
    Сообщения:
    103
    Симпатии:
    0
    Всё нашёл... Кому надо , это можно узнать так:

    PHP:
    1. $ddd=mysql_fetch_assoc(mysql_query("SHOW TABLE STATUS FROM `database_name` LIKE 'table_name'"));
    2. echo $ddd['Auto_increment'];
     
  10. Elkaz

    Elkaz Старожил
    Команда форума Модератор

    С нами с:
    26 июн 2006
    Сообщения:
    3.373
    Симпатии:
    0
    Адрес:
    Баку, Азербайджан
    [sql]SELECT id FROM `table` ORDER by id DESC LIMIT 1[/sql]
    Будет дольше?
     
  11. Hight

    Hight Старожил
    Команда форума Модератор

    С нами с:
    5 мар 2006
    Сообщения:
    7.153
    Симпатии:
    0
    Адрес:
    из злой параллельной вселенной
    а вот мой вариант =)
    [sql]SELECT MAX(id) FROM table;[/sql]
     
  12. GvOzD

    GvOzD Активный пользователь

    С нами с:
    16 фев 2007
    Сообщения:
    103
    Симпатии:
    0
    Это не правильный метод , так как он тебе вернёт последний id.Если перед ним запись была удалена , то инкремент будет не 1,2,3,4,5 ,а 1,2,3,4,6.
     
  13. GvOzD

    GvOzD Активный пользователь

    С нами с:
    16 фев 2007
    Сообщения:
    103
    Симпатии:
    0
    Кстати в tablehandler'е храниться очень много полезной информации

    PHP:
    1. $ddd=mysql_fetch_assoc(mysql_query("SHOW TABLE STATUS FROM `database_name` LIKE 'table_name'"));
    2. print_r($ddd);
     
  14. Elkaz

    Elkaz Старожил
    Команда форума Модератор

    С нами с:
    26 июн 2006
    Сообщения:
    3.373
    Симпатии:
    0
    Адрес:
    Баку, Азербайджан
    GvOzD
    надо придерживаться сортировки.
    Если запись была удалена - не надо вместо нее совать другую запись (т.е запись с ID 5 удалена, уже есть 6 и 7, а при добавлении новая запись будет иметь ID 5). Это не правильно. Имхо.
     
  15. Hight

    Hight Старожил
    Команда форума Модератор

    С нами с:
    5 мар 2006
    Сообщения:
    7.153
    Симпатии:
    0
    Адрес:
    из злой параллельной вселенной
    Тоже верно.
     
  16. GvOzD

    GvOzD Активный пользователь

    С нами с:
    16 фев 2007
    Сообщения:
    103
    Симпатии:
    0
    Elkaz
    Объясни как это будет работать , на пальцах. При каждом добавлении записи у тебя добавляется SELECT , а если у тебя милионы записей , а удалил ты предпоследнюю , это всё очень долго будет работать. И как ты собираешься найти ту запись которую удалил )
     
  17. Hight

    Hight Старожил
    Команда форума Модератор

    С нами с:
    5 мар 2006
    Сообщения:
    7.153
    Симпатии:
    0
    Адрес:
    из злой параллельной вселенной
    Чиво? Я ничего не собираюсь искать =)

    Ты делаешь инсёрт, у тебя инкрементицо ид, потом селект по макс(ид). Чего не понятно?

    upd. а вопрос то не мне был,,, ещё не проснулся, торможу.
     
  18. Anonymous

    Anonymous Guest

    Нуну.
    Через полмесяца он прибежит с вопросом "у меня некоторым записям попадают неправильные ИД!"
    блин, ну почему никто учится не хочет? Мало того, что не знают, так еще и упорствуют в своем заблужении.
     
  19. GvOzD

    GvOzD Активный пользователь

    С нами с:
    16 фев 2007
    Сообщения:
    103
    Симпатии:
    0
    Горбунов Олег
    )))) Просто все ПХП программеры самоучки , мола в каких универах ПХП учат. Мне вот один человек сказал что бы я ИД вообще не трогал , некоторым этого наверное не говорили )))
     
  20. RomanBush

    RomanBush Активный пользователь

    С нами с:
    5 дек 2007
    Сообщения:
    798
    Симпатии:
    0
    Адрес:
    200 км от Москвы
    что-то мне подсказывает, что можно составить запрос так, чтобы он добавлял данные в две таблицы одним запросом...
    Может, всё-таки, переформулировать задачу?
     
  21. Вльдемар

    Вльдемар Активный пользователь

    С нами с:
    20 май 2006
    Сообщения:
    635
    Симпатии:
    0
    Адрес:
    Белхород
    По моему легче(и правильней) всего вытащить mysql_insert_id после INSERTа, а потом уже вставлять в другую таблицу с этим id
     
  22. Anonymous

    Anonymous Guest

    Это здравый смысл, а не обучение.
     
  23. Hight

    Hight Старожил
    Команда форума Модератор

    С нами с:
    5 мар 2006
    Сообщения:
    7.153
    Симпатии:
    0
    Адрес:
    из злой параллельной вселенной
    Чего ты орёшь =) я то так не делаю.
     
  24. Anonymous

    Anonymous Guest

    Hight, я не ору. Я вообще ни на кого в жизни голос не повышаю. И без этого боятся.
     
  25. Hight

    Hight Старожил
    Команда форума Модератор

    С нами с:
    5 мар 2006
    Сообщения:
    7.153
    Симпатии:
    0
    Адрес:
    из злой параллельной вселенной
    Да? хм, а Я ору постоянно как резаный. Сегодня кстати наредкость спокойный ) погода хорошая.
     
Статус темы:
Закрыта.