Вставка нескольких строк с помощью цикла - PullRequest
0 голосов
/ 22 июня 2010

Код:

for($i = 1; $i <= $arr['var']; $i++) {

  if($i == $arr['var']):

    $insert .= '('.$n_id.', 12)';

  else:

    $insert .= '('.$n_id.', 12),';

  endif;

}

$uz = mysql_query("INSERT INTO `cars`
                   (n_id, auto_id)
                   VALUES
                   '$insert'") or die(mysql_error());

Почему возникает ошибка синтаксиса SQL?Что я делаю не так?

Ответы [ 4 ]

1 голос
/ 22 июня 2010

Вам не хватает конкатенации строк в операторе INSERT:

$uz = mysql_query("INSERT INTO `cars`
                     (n_id, auto_id)
                   VALUES "
                    . $insert .") or die(mysql_error());

Предполагается, что у вас также нет проблем с запятой для поддержки кортежей.

0 голосов
/ 07 ноября 2011
  • Ваш неразвернутый запрос выглядит так:

    INSERT INTO `cars` (n_id, auto_id) VALUES '$insert'
    

    Затем, с расширением $insert, он, вероятно, выглядит примерно так:

    INSERT INTO `cars` (n_id, auto_id) VALUES '(1,12),(2,12),(3,12)';
    
  • Эти одинарные кавычки (') вокруг списка данных не должны присутствовать, так как одинарные кавычки разделяют строки.

  • Вместо этого вы хотите:

    INSERT INTO `cars` (n_id, auto_id) VALUES (1,12),(2,12),(3,12);
    

    Повторно свернув это в свой PHP, вы получите:

    INSERT INTO `cars` (n_id, auto_id) VALUES $insert
    

tl; др: удалить ' s.

0 голосов
/ 22 июня 2010

Вкл. Общее управление SQL . Этот пример приведен для вставки в:

INSERT INTO [table]
( [field1], [field2], [field3] ) VALUES
( '[value1.1]', '[value1.2]', '[value1.3]' ),
( '[value2.1]', '[value2.2]', '[value2.3]' ),
( '[value3.1]', '[value3.2]', '[value3.3]' ),
etc.

Возможно, у вас есть некоторые проблемы с синтаксисом.Я рекомендую распечатать

"INSERT INTO `cars`
       (n_id, auto_id)
       VALUES
       '$insert'"

, чтобы увидеть, что вы отправляете.

0 голосов
/ 22 июня 2010

Использование обратных кавычек (вокруг машин) некорректно, когда я смешиваюсь с одинарными кавычками (около $ insert), насколько мне известно, в mySQL. Выберите одно или другое - одинарные кавычки, вероятно, рекомендуется для стандартизации.

...