所以我不知道这里的交易是什么......下面的代码会在代码后面生成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 ("'","'", $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 :(得分: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函数。
此外,您还必须使用引号内爆,而不仅仅是逗号。