2014-10-24 5 views
0

Я делаю автоматический наполнитель базы данных, и я столкнулся с ошибкой, которую я не могу понять.Динамический запрос INSERT INTO

Я разрабатываю скрипт, который должен обрабатывать множество файлов, содержащих несколько значений. Информация, содержащаяся в файлах, имеет структуру, которая следует:

ID time_stamp (value1 value2 Value3 Value4 value5) * I (value1 value2 Value3 Value4 value5) * п (значение1 значение2) -> в строке файла

я и п (п = nGrupos) известны и я изменяется от 1 до я и п изменяется от 1 до 2. Каждая из кронштейнов, установленных должна быть вставлена ​​в другую таблицу, отсюда и 5 значения ниже.

Код, который у меня возникают проблемы (я не могу получить другие кронштейны наборы для работы, но если он работает для этого им, он должен работать для остальных):

$pos = 2; 
$query = $con->query($query); 
$rows = $stmt->fetch(PDO::FETCH_ASSOC); 

for($i = 0; $i < $rows['nGrupos'] ; $i++) 
{ 
    $stmt = "INSERT INTO `registo grupos majo` 
    VALUES ('', 
      '1', 
      '$line[1]', 
      '$line[($pos+$i)]', //line 109 
      '$line[(($pos+1)+$i)]', 
      '$line[(($pos+2)+$i)]', 
      '$line[(($pos+3)+$i)]', 
      '$line[(($pos+4)+$i)]')"; 

    $query = $con->query($stmt); 
} 

Когда я пытаюсь запустить это я получаю сообщение об ошибке: Синтаксическая ошибка:

syntax error, unexpected '(', expecting identifier (T_STRING) or variable (T_VARIABLE) or number (T_NUM_STRING) in (location of the .php) on the line 109. 
+0

попробовать это нравится .... ' '{$ строка [1]}',' –

+2

или использовать запросы с параметрами PDO .. http://php.net/manual/en/pdo.prepare.php –

+0

^это или '' ". $ line [($ pos + $ i)]. "'или даже лучше: используйте подготовленное утверждение – kero

ответ

1
$stmt = "INSERT INTO `registo grupos majo` 
    VALUES ('', 
      '1', 
      '" . $line[1] . "', 
      '" . $line[($pos+$i)] . "', #line 109 
      '" . $line[(($pos+1)+$i)] . "', 
      '" . $line[(($pos+2)+$i)] . "', 
      '" . $line[(($pos+3)+$i)] . "', 
      '" . $line[(($pos+4)+$i)] . "')"; 
+0

Cheers, начал работать – Comum