За последние 24 часа нас посетили 17878 программистов и 1607 роботов. Сейчас ищут 1390 программистов ...

php и mysql, как узнать ID свежевставленно записи?

Тема в разделе "MySQL", создана пользователем keymaster, 27 апр 2006.

  1. keymaster

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

    С нами с:
    25 апр 2006
    Сообщения:
    83
    Симпатии:
    0
    Адрес:
    Подольск
    формат =
    ID - автоинкремент
    txt - текст

    как после INSERT узнать, какое значение получило поле ID?
     
  2. Kelkos

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

    С нами с:
    15 апр 2006
    Сообщения:
    37
    Симпатии:
    0
    $id=mysql_insert_id();
    но корректно работает если ID типа int ..
     
  3. Danilevsky

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

    С нами с:
    12 фев 2006
    Сообщения:
    286
    Симпатии:
    0
    Адрес:
    Киев
    SELECT id FROM table ORDER BY id DESC LIMIT 1;
     
  4. 440Hz

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

    С нами с:
    21 дек 2012
    Сообщения:
    8.003
    Симпатии:
    1
    Адрес:
    Оттуда
    можем попасть на момент, когда это не будет истинным.
     
  5. Kelkos

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

    С нами с:
    15 апр 2006
    Сообщения:
    37
    Симпатии:
    0
    гы-гы.. в данном случае можешь получить каку. не факт, что последняя запись будет именно той. которая была вставлена перед этим запросом.
     
  6. Ronnie

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

    С нами с:
    1 июл 2006
    Сообщения:
    3
    Симпатии:
    0
    А не возникнет ли ситуация, что значение, которое вернет mysql_insert_id, тоже уже будет не актуальным
     
  7. Mavir

    Mavir Guest

    Не возникнет, если не делать новой вставки.
     
  8. Ronnie

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

    С нами с:
    1 июл 2006
    Сообщения:
    3
    Симпатии:
    0
    так в том то и дело, дапустим в скрипте подрят идет insert и получение mysql_insert_id, но поситителей настолько много что данный инсерт выполняется почти одновременно десятки раз. вот мне и интересно возможна ли ситуация когда:
    шаг 1: первая копия скрипта выполняет инсерт
    шаг 2: вторая копия скрипта выполняет инсерт
    шаг 3: первая копия получает значение mysql_insert_id
    и если такая ситуация возможна, то извесны ли кому-нибудь солюшины
     
  9. Mavir

    Mavir Guest

    Есть такая функция в MySQL (не в PHP) LAST_INSERT_ID(). Я так думаю, что ее и вызывает PHP. Так вот он возращает ID последней вставленной записи именно тобой, а не вообще в БД. Поэтому такой ситуации не возникнет, не зря же ввели такую функцию :)
    Ради эксперимента, попробуй вызвать last_insert_id() без вставки записи и посмотри, что она вернет ;)
     
  10. alemiks

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

    С нами с:
    22 июн 2006
    Сообщения:
    29
    Симпатии:
    0
    Адрес:
    Voronezh - Novgorod the Great
    транзакции
     
  11. Ronnie

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

    С нами с:
    1 июл 2006
    Сообщения:
    3
    Симпатии:
    0
    Mavir

    спасибо большое, действительно значение last_insert_id и, соответственно, mysql_insert_id, устанавливается для каждого коннекта к базе.