Так что я использую php для загрузки файла csv в массив, обманываю его, очищаю и вставляю данные в таблицу mysql.Вставка Mysql ведет себя странно
Таблица (inboundnew
) содержит 9 полей, одну дату, один varchar и 7 целых чисел. Скрипт обрабатывает файл в соответствии с просьбой, и строит «вставить команду в строку», которую я затем запустить с:
$result= mysql_query($string) or die(mysql_error())
Вкладыше строковых выходов как:
insert into inboundnew
(ndate,branch,ans,unans,voice,unqueued,actioned,unactioned, total)
values
("2000-01-01","Name of Customer",0,0,0,0,0,0,0);
Это дает мне следующая ошибка
У вас возникла ошибка в синтаксисе SQL; проверьте руководство, соответствующее версии вашего сервера MySQL, для правильного синтаксиса для использования рядом с '' по строке 1
Однако, когда я запускаю строку через phpmyadmin, она отлично вставляется.
Буду очень признателен, если кто-нибудь из вас поймет, что здесь может быть неправильным.
ОК - так после двух дней удары мозгов на этом, у меня все еще есть проблема.
Я опубликовал ниже код, который я запускаю, чтобы построить строку, которую я затем запускаю в запросе. Он не помещает апострофы, и все же я все еще получаю ошибку MySQL. Извините, если код не отформатирован правильно - я не уверен, как это сделать здесь. Я загрузил и открыл файл CSV ...
while(!feof($file)) {
$lines[] = fgets($file); }
$clean=array();
$clean = array_unique($lines);//remove duplicates
$count=0;
$string="insert into inboundnew (date,branch,ans,unans,voice,unqueued,actioned,unactioned,total) values ";
// теперь писать в таблицу - пропускающие первые 2 строки
enter code here
if ($count > 1) {
$parts=explode(',', $val);
$a=$parts[0];//ignore this field
$b=$parts[1];//ignore this field)
if ($b>""){ //ignore if blank line
$salon=$parts[2];
$ans=$parts[3];
$missed=$parts[4];
$voice=$parts[5];
$unq=$parts[6];
$act=$parts[7];
$unact=$parts[7];
$total=$parts[8];
$date=$date;
$string .= '("'.$date.'","'.$salon.'",'.$ans.','.$missed.','.$voice.','.$unq.','.$act.','.$unact.','.$total.'),'. PHP_EOL;
}
}
$count++;
}
//now remove last comma
$strlen= strlen($string);
$string= substr($string,0, $strlen-2);
Это создает строку, которая не работает в сценарии, но работает в PhpMyAdmin и выдает синтаксическую ошибку
Это означает, что у вас есть ошибка синтаксического анализа строки. Убедитесь, что вы правильно использовали кавычки. '" вставить в значения xx (a, b, c, d) ('$ a', '$ b', '$ c', '$ d') "' –
Я уверен, что вы правы, но выглядит идеальный на данный момент. Я проверил его так много раз ... Мне нужно немного отвлечься от него. –
В сообщении об ошибке указано, что ошибка возникает, когда она попадает на два апострофа. В вашей строке нет никаких апострофов. Вы смотрите на неправильный SQL. – Quentin