首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >错误:检查手册[.]MySQL服务器版本,用于正确的语法使用

问错误:检查手册[.]MySQL服务器版本,用于正确的语法使用
EN

Stack Overflow用户
提问于 2010-10-19 22:30:57
回答 3查看 2.1K关注 0票数 0

所以我不知道这是什么交易..。下面的代码会在代码后面产生mysql错误。

代码语言:javascript
复制
$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服务器版本对应的手册,以获得正确的语法以使用near‘

解决了!所以我想在mysql中转储.csv文件时把这个解决方案发到愚蠢的、愚蠢的单引号、双引号故障上.见下文:

代码语言:javascript
复制
$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);
EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2010-10-19 22:46:19

在MYSQL查询中有一个PHP函数。

我不相信您可以将函数移出引号之外,但是您必须遍历所有的值:

即。

代码语言:javascript
复制
foreach($values as $key=>$value){
$values[$key] = mysql_real_escape_string($value);
}

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

此外,你也必须使用引号,而不仅仅是逗号。

票数 0
EN

Stack Overflow用户

发布于 2010-10-19 22:36:11

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

您可以打印(或记录)生成的SQL语句,并且可能会发现问题。

票数 1
EN

Stack Overflow用户

发布于 2010-10-19 22:38:47

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

试试这个:

代码语言:javascript
复制
$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) .')';
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/3973308

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档