Помогите найти ошибку в запросе к бд

Тема в разделе "PHP", создана пользователем Playing, 12 мар 2012.

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

    Playing Постоялец

    Регистр.:
    9 авг 2010
    Сообщения:
    77
    Симпатии:
    4
    Доброе утро, нуллед. Простите за идиотский вопрос, уже чет час не могу понять где я что напортачил (3е сутки почти без сна),

    Скрипт к БД подключается, но в итогде записей никаких не происходит. Как я понимаю ошибка тут:


    $result = mysql_query("INSERT INTO jos_vm_product_type_1 (`product_id`, `nov_rayoun`, `nov_podraz`, `nov_mrai`, `nov_street`, `nov_ndoma`, `nov_opdoma`, `nov_kop`, `nov_pl_ot`, `nov_pl_do`, `nov_kol_kom`, `nov_ann`) VALUES ('', '$nm', '$nm2', '$nm3', '$nm4', '$nm5', '$nm6', '$nm7', '$nm8', '$nm9', '$nm10' )");


    Спасибо большое!)
     
  2. NulleTop

    NulleTop localhost

    Регистр.:
    3 окт 2009
    Сообщения:
    258
    Симпатии:
    37
    Ну, на вскидку, у вас 12 полей в БД, а запихнуть вы пытаетесь только 10.
    вот здесть запятая лишняя и пробел после нее.
     
  3. t3s

    t3s

    Регистр.:
    16 фев 2008
    Сообщения:
    719
    Симпатии:
    290
    NulleTop, похоже что там не лишняя запятая с пробелом а попытка всунуть пустое значение

    ТС, честно говоря мне не совсем понятно желание сделать именно так
    если у product_id стоит атрибут AUTO_INCREMENT, что вполне логично для всяких "ид" то сам product_id в запросе не нужен, равно как и вот это (выделил цветом) :
    ну а про кол-во полей было сказано выше
     
  4. demmy

    demmy

    Регистр.:
    13 ноя 2006
    Сообщения:
    330
    Симпатии:
    96
    Не претендую на профессионализм, но "в столбик" визуально понятнее.
    PHP:
    $result mysql_query("
    INSERT INTO jos_vm_product_type_1 (
        `nov_rayoun`,
        `nov_podraz`,
        `nov_mrai`,
        `nov_street`,
        `nov_ndoma`,
        `nov_opdoma`,
        `nov_kop`,
        `nov_pl_ot`,
        `nov_pl_do`,
        `nov_kol_kom`,
        `nov_ann`)
    VALUES (
        '
    $nm',
        '
    $nm2',
        '
    $nm3',
        '
    $nm4',
        '
    $nm5',
        '
    $nm6',
        '
    $nm7',
        '
    $nm8',
        '
    $nm9',
        '
    $nm10' );
        "
    ); 
    1. Если в инсерте идет не *, а перечисление полей поле с автоинскрементом указывать не нужно.
    2. Визуально видно, что исерт больше валуес, значит пропущено поле.
    3. После валуес рекомендуется ставить разделитель ;
     
  5. dino

    dino

    Регистр.:
    28 май 2009
    Сообщения:
    550
    Симпатии:
    204
    я бы еще синтаксис вставки php переменных в запрос добавил...
    PHP:
    VALUES '".$nm."''".$nm2."''".$nm3."''".$nm4."''".$nm5."''".$nm6."''".$nm7."''".$nm8."''".$nm9."''".$nm10."' );
     
  6. NulleTop

    NulleTop localhost

    Регистр.:
    3 окт 2009
    Сообщения:
    258
    Симпатии:
    37
    Вообще, запрос сильно убитый.
    если у поля автоинкремент, тогда его указывать не надо.
    В таком случае двойные кавычки, запятая и пробел тут не нужны.
     
  7. SiZE

    SiZE Постоялец

    Регистр.:
    31 янв 2010
    Сообщения:
    51
    Симпатии:
    10
    для начала mysql_error(). т.к. вы не скинули код ошибки, это может быть все: от косяка из-за необработанных переменных, до отсутствия таблицы.

    и вообще полезно ознакомится
     
    Playing нравится это.
  8. Playing

    Playing Постоялец

    Регистр.:
    9 авг 2010
    Сообщения:
    77
    Симпатии:
    4
    Дело в том что поле как раз не авто, забыл указать.

    Спасибо всем, вроде бы разобрался, но в любом случае уже решил чуток по другому сделать все.
     
Статус темы:
Закрыта.