2010-10-19 36 views
0

'附近使用正确的语法所以我不知道这里的交易是什么......下面的代码产生代码后面的mysql错误。错误:检查手动MySQL服务器版本是否在'

$fcontents = file("inventory.csv"); 

for ($i = 1; $i < sizeof($fcontents); $i++) { 
    $line = trim($fcontents[$i]); 
    $arr = explode(',', $line); 
    $values = implode(',', $arr); 
    $values = str_replace('&', 'and', $values); 

    $sql = 'INSERT INTO inventory (dealerid, name, vin, stock, newused, year, ' . 
      'make, model, series, body, color, intcolor, price, retailprice, ' . 
      'miles, transmission, engine, restraint, certified, photourl, ' . 
      'comments, flag, options, citympg, hwympg) ' . 
      'VALUES mysql_real_escape_string(' . $values . ')'; 
    mysql_query($sql); 

    echo $sql.'<br><br>'; 
    if (mysql_error()) { 
     echo mysql_error() .'<br><br>'; 
    } 
} 

您的SQL语法错误;检查对应于您的MySQL服务器版本的手册,以使用正确的语法以使用'

RESOLVED !!!所以我想后的解决愚蠢,愚蠢的单引号,倾倒在mysql中的.csv文件时,双引号毛刺......见下文:

$fcontents = file("http://pathtofile.com/inventory.csv"); for($i=1; $i < sizeof($fcontents); $i++) { $line = trim($fcontents[$i]); $arr = explode(",", $line); $arr = str_replace ("'","&#39;", $arr); $values = implode("','", $arr); $values = str_replace("\"',",'\'",', $values); $values = str_replace(",'\"",',"\'', $values); $values = str_replace("&", "and", $values); $sql = "INSERT INTO vehicles.inventory (dealerid,name,vin,stock,newused,year,make,model,series,body,color,intcolor,price,retailprice,miles,transmission,engine,restraint,certified,photourl,comments,flag,options,citympg,hwympg) VALUES ('".$values."')"; mysql_query($sql); 
+0

什么是实际查询? – 2010-10-19 22:36:02

回答

0

您的MySQL查询PHP函数。

我不相信你可以移动功能的报价之外,但你通过所有值都具有循环:

即。

foreach($values as $key=>$value){ 
$values[$key] = mysql_real_escape_string($value); 
} 

添加该命令以转义所有值,然后更改查询以删除PHP函数。

此外,你也必须用引号内爆,而不只是逗号。

+0

那么上述建议摆脱了那个错误,但现在我得到了这个补丁错误:列数不匹配第1行的值计数 – Brandon 2010-10-19 23:04:08

+0

由于此页面陈述(http://htmlfixit.com/cgi-tutes/tutorial_MySQL_Error_Invalid_Query_Column_Count_Does_Not_Match_Value_Count .php),错误是因为您指定的列多于“VALUES”。确保在添加数组时添加括号。 – 2010-10-19 23:06:37

+0

好的...每天都会有这样的事情发生在所有的开发者身上......我终于通过反复试验了解到了这一点。它总是最愚蠢,最傻瓜的东西。 RE:错误 - 列计数与第1行的值计数不匹配。问题是当我用''爆炸时,字段将''后面的'...看起来像','入口','进入“'我爱我的工作! :-) – Brandon 2010-10-19 23:09:11

1

explode()implode()字里行间,你应该是mysql_real_escape_string()-在$arr中的每个值。该函数应该在PHP中执行,而不是发送给MySQL执行。

你可能已经打印出(或记录)了你生成的SQL语句,你可能已经发现了这个问题。

0

mysql_real_escape_string()是一个PHP函数,但是当它出现在代码中时,它仍然在字符串范围内。

试试这个:

$sql = 'INSERT INTO inventory (dealerid, name, vin, stock, newused, year, make, model, series, body, color, intcolor, price, retailprice, miles, transmission, engine, restraint, certified, photourl, comments, flag, options, citympg, hwympg) VALUES (' . mysql_real_escape_string($values) .')'; 
相关问题