За последние 24 часа нас посетили 38243 программиста и 1722 робота. Сейчас ищут 610 программистов ...

Как определить следующий id строки?

Тема в разделе "PHP для новичков", создана пользователем greenzlat, 5 авг 2010.

  1. greenzlat

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

    С нами с:
    27 апр 2008
    Сообщения:
    255
    Симпатии:
    0
    Вопрос в следующем: мне нужно узнать какой id присвоится строке при добавлении в таблицу. Хотел сделать так, выбрать максимальное id из таблицы и +1, но прикол в том, что если в таблице была удалена последняя запись с id=10 например, то максимальное id в базе останется 9, а следующий id строки присвоит уже не 10, а 11. Так вот как узнать какой id присвоит строке? Нужно для того чтобы при закачивании картинки в базе хранилось имя картинки = id!
     
  2. Padaboo

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

    С нами с:
    26 окт 2009
    Сообщения:
    5.242
    Симпатии:
    1
  3. greenzlat

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

    С нами с:
    27 апр 2008
    Сообщения:
    255
    Симпатии:
    0
    mysql_insert_id() возвращает 0, у меня нет запроса к БД, я просто через админку добавляю строку в БД mysql_query ("INSERT INTO posts и т.д.
     
  4. Михаил

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

    С нами с:
    12 июл 2009
    Сообщения:
    545
    Симпатии:
    0
    Адрес:
    Bielarus
    А у вас колонка с id AUTO_INCREMENT?
     
  5. Padaboo

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

    С нами с:
    26 окт 2009
    Сообщения:
    5.242
    Симпатии:
    1
    greenzlat
    после вставки mysql_insert_id()
     
  6. greenzlat

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

    С нами с:
    27 апр 2008
    Сообщения:
    255
    Симпатии:
    0
    Да
     
  7. Михаил

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

    С нами с:
    12 июл 2009
    Сообщения:
    545
    Симпатии:
    0
    Адрес:
    Bielarus
    Тогда всё должно работать
     
  8. Hight

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

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

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

    С нами с:
    10 апр 2007
    Сообщения:
    1.449
    Симпатии:
    0
    Адрес:
    г.Волгодонск Роствской обл.
    Hight
    ух ты.. инетересная инфа.
    А я уже хотел тригер рисовать на вставку новой строке. У меня Одно поле напрямую зависит от автоинкременнтного ключа =)
     
  10. phpdude

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

    С нами с:
    9 июл 2010
    Сообщения:
    697
    Симпатии:
    0
    Hight
    при большой конкурентности совсем не факт что ты угадаешь, а если поле уник то капец :D

    лучше сначала билибердой заполнить, потом апнуть до нормальной цифры
     
  11. Hight

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

    С нами с:
    5 мар 2006
    Сообщения:
    7.153
    Симпатии:
    0
    Адрес:
    из злой параллельной вселенной
    Да. Я просто на вопрос ответил. Понятное дело, что надо проектировать по-другому, чтобы такой задачки не было.
     
  12. phpdude

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

    С нами с:
    9 июл 2010
    Сообщения:
    697
    Симпатии:
    0
    Hight
    ага, я просто именно по этой теме сденя все утро гуглил)))))))))))) регистрация guest аккаунта в соц сети, у него имя аля guest#$myid

    а майайди известен когда только добавляется строка. в склсервере от m$ есть решение, под мускуль пока нету насколько я нагуглил, там это IDENT_CURRENT функция
     
  13. Hight

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

    С нами с:
    5 мар 2006
    Сообщения:
    7.153
    Симпатии:
    0
    Адрес:
    из злой параллельной вселенной
    phpdude
    А я эту тему увидел, сразу пма вспомнил:

    [​IMG]

    =)
     
  14. phpdude

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

    С нами с:
    9 июл 2010
    Сообщения:
    697
    Симпатии:
    0
    Hight
    я navicat юзаю уже несколько лет, дай бог не вспоминать про пма :D
     
  15. Hight

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

    С нами с:
    5 мар 2006
    Сообщения:
    7.153
    Симпатии:
    0
    Адрес:
    из злой параллельной вселенной
    Всё есть. Временные записи. Делаешь таблицу вида:

    auto++ | uniq_id | active | bla-bla-bla

    где uniq_id ты генеришь сам перед вставкой. Как угодно, хоть так: $uniq_id = uniqid();
    active - активно ли поле, типа есть ли запись =)

    Далее делаешь инсёрт. У тебя есть запись с автоинкрементированным идом и твоим уникидом. Делаешь селект по уникиду и выдёргиваешь автоинкремент. Всё. А дальше делай чо хочешь. Апдейт или делит, как надо будет.
     
  16. phpdude

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

    С нами с:
    9 июл 2010
    Сообщения:
    697
    Симпатии:
    0
    Hight
    да ты герой!

     
  17. Hight

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

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

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

    С нами с:
    9 июл 2010
    Сообщения:
    697
    Симпатии:
    0
    Hight
    увы я тоже ))))
     
  19. igordata

    igordata Суперстар
    Команда форума Модератор

    С нами с:
    18 мар 2010
    Сообщения:
    32.408
    Симпатии:
    1.768
    Hight
    он грит, сделать запись в бд пофик че. получив id этой записи уже в нее внести нужную инфу.

    но это опасно.
     
  20. phpdude

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

    С нами с:
    9 июл 2010
    Сообщения:
    697
    Симпатии:
    0
    xtv&
     
  21. phpdude

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

    С нами с:
    9 июл 2010
    Сообщения:
    697
    Симпатии:
    0
    почему?
     
  22. igordata

    igordata Суперстар
    Команда форума Модератор

    С нами с:
    18 мар 2010
    Сообщения:
    32.408
    Симпатии:
    1.768
    ну может ктонить прочтет эту мусорную строку до того как ее поменяют на нормальную.
     
  23. phpdude

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

    С нами с:
    9 июл 2010
    Сообщения:
    697
    Симпатии:
    0
    igordata
    аа, ну возможно :) только у меня такое невозможно, логика такая. но как предостережение да :(
     
  24. Hight

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

    С нами с:
    5 мар 2006
    Сообщения:
    7.153
    Симпатии:
    0
    Адрес:
    из злой параллельной вселенной
    Я говорил о том же.
    Для этого нужно поле которое будет говорить активна запись или нет.