所以我使用php将csv文件上传到数组中,对其进行重复数据删除,清理并将数据插入到mysql表中。
表(inboundnew
)有9个字段,一个日期,一个varchar和7个整数。
该脚本按请求处理该文件,并在字符串中构建一个' insert命令。然后我运行:
$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 ";
//现在写入表格 - 跳过前两行
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中工作并输出语法错误
答案 0 :(得分:0)
使用mysql_real_escape_string转义字符串值。
示例:
$name = mysql_real_escape_string($name);
$sql = "insert into test (name) values ('$name')";
答案 1 :(得分:0)
确认列的数据类型。如果是字符串,则值应用双引号或单引号括起来。