mysql_insert_id не так работает

Тема в разделе "Базы данных", создана пользователем zilon, 11 окт 2013.

Статус темы:
Закрыта.
Модераторы: latteo
  1. zilon

    zilon

    Регистр.:
    30 июл 2011
    Сообщения:
    370
    Симпатии:
    147
    добавлял по 500 записей в бд и увидел что mysql_insert_id не так работает, на оф сайте написано что он устарел, подскажите пожалуйста что использовать вместо него, я искал не нашёл...

    [​IMG]
     
  2. esche

    esche

    Регистр.:
    9 авг 2009
    Сообщения:
    359
    Симпатии:
    243
    Что значит "не так работает"? версия mysql? php?
    Если уж на то пошло, устарели все функции, начинающиеся с mysql_ (альтернатива PDO или mysqli_)

    А на скрине что означают числа в первой и второй колонках?
    И да.. какое текущее значение auto_increment у таблицы?
     
  3. zilon

    zilon

    Регистр.:
    30 июл 2011
    Сообщения:
    370
    Симпатии:
    147
    во я про альтернативную функцию спрашиваю что в место
    PHP:
    mysql_insert_id();
    использовать? версия php 5.3.3 mysql 5.1.69. Первая колонка id сразу за 1481 идёт 14731 а должно идти 1482. Поэтому спрашиваю чем mysql_insert_id() заменить
     
  4. esche

    esche

    Регистр.:
    9 авг 2009
    Сообщения:
    359
    Симпатии:
    243
    тут картинка "нельзя просто так взять и заменить одну функцию" (С)
    переписывать весь код придётся.

    А по теме - вопрос про текущий автоинкремент таблицы остался без ответа.
    Есть ощущение, что дело не в устаревшей функции.

    Что в самой таблице (если при помощи phpmyadmin открыть)?
     
  5. Nei

    Nei Nosce te ipsum

    Регистр.:
    5 сен 2009
    Сообщения:
    636
    Симпатии:
    503
    mysql_insert_id хоть и "устарела", но всё же замечательно работает (насколько я знаю на всех последних версиях PHP)

    Немного "поRTFMлю"...
    Именно так используется функция?
     
  6. zilon

    zilon

    Регистр.:
    30 июл 2011
    Сообщения:
    370
    Симпатии:
    147
    первое значение это id а второе позиция в группе. Я из бекапа восстановил, добавил данные несколько раз, поэтому текущее значение автоинкремента - 13254

    да так вот часть кода

    PHP:
    <?php

    $db 
    mysql_connect("localhost","","");
    mysql_select_db("" ,$db);
    @
    mysql_query("SET NAMES utf8");

    $result mysql_query ("INSERT INTO keitaro_streams (id, group_id, position, chance, redirect_type, url, comments, status, countries_filter, countries_filter_value, cities_filter, cities_filter_value, ip_filter, ip_filter_value, browser_filter, browser_filter_value, os_filter, os_filter_value, keywords_filter_value, langs_filter, langs_filter_value, referer_filter, referer_filter_value, proxy_filter, uniq_filter, schedule, start_date, end_date, manual_referer,    checker_active,    checker_url, checker_regx, checker_action, checker_interval, checker_source, checker_next_run, checker_action_done, manual_filters, ua_filter, ua_filter_value,    mobile_filter) VALUES('mysql_insert_id();', '26', '1', '0', 'location', 'http://movie.909.su/article.php?id=1348511604', '', '1', '', '', '', '', '', '', '', '', '', '', '*стив джобс потерянное интервью*', '', 'a:0:{}','', '', '', '', '', '0', '0', '', '0', '', '', 'disable', '0', '', '0', '0', 'a:0:{}', '', '', '')");     if ($result == true)

            {echo 
    'Добавлено<br>';
            }
            else
            {
            echo
    'ОШИБКА - ';
    echo 
    mysql_errno() . ": " mysql_error($db) . "\n";
            }

        
    mysql_close($db);

    ?>
    он генерится скриптом и повторяется 500 раз подряд, не более, потом сохраняется, заливается, открывается...
     
  7. esche

    esche

    Регистр.:
    9 авг 2009
    Сообщения:
    359
    Симпатии:
    243
    А где в этой части кода mysql_insert_id :D ?

    upd о.. разглядел.. Она под двумя кавычками и ещё с точкой с запятой..
    конечно, так она работать не будет.

    upd2 И до кучи.. работает эта штука в пределах соединения с БД.
     
    zilon нравится это.
  8. BDSG

    BDSG

    Регистр.:
    28 фев 2009
    Сообщения:
    203
    Симпатии:
    109
    работать она не будет даже не потому, что в кавычках, а потому, что на момент её вызова запрос ещё не выполнен, и возвращать тупо нечего..

    сделайте ALTER TABLE keitaro_streams MODIFY COLUMN id INTEGER NOT NULL AUTO_INCREMENT; и спите спокойно (id из insert уберите только)..
     
    Последнее редактирование: 11 окт 2013
    zilon нравится это.
Статус темы:
Закрыта.