Mysql插入行为奇怪

时间:2015-07-19 07:04:12

标签: php mysql

所以我使用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中工作并输出语法错误

2 个答案:

答案 0 :(得分:0)

使用mysql_real_escape_string转义字符串值。

示例:

$name = mysql_real_escape_string($name);
$sql = "insert into test (name) values ('$name')";

答案 1 :(得分:0)

确认列的数据类型。如果是字符串,则值应用双引号或单引号括起来。