错误:检查手册[...] MySQL服务器版本,以便在'附近使用正确的语法'

时间:2010-10-19 22:30:57

标签: php mysql insert

所以我不知道这里的交易是什么......下面的代码会在代码后面生成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服务器版本对应的手册,以便在“

附近使用正确的语法

已解决!!! 所以我想在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);

3 个答案:

答案 0 :(得分:1)

explode()implode()行之间,您应该mysql_real_escape_string() - $arr中的每个值。该函数应该在PHP中执行,而不是发送给MySQL以便它执行。

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

答案 1 :(得分: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) .')';

答案 2 :(得分:0)

你的MYSQL查询中有一个PHP函数。

我不相信你可以将函数移到引号之外,但你必须循环遍历所有值:

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

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

此外,您还必须使用引号内爆,而不仅仅是逗号。