警告:您的SQL语法有错误;查看与MySQL对应的手册

时间:2013-07-25 17:40:58

标签: mysql sql syntax

  

警告:您的SQL语法有错误;检查与MySQL服务器版本对应的手册,以便在'color:red'>

附近使用正确的语法

这是我的代码:

$db->query("UPDATE members set id='{$this->test['id']}', 
     lvl='{$this->userlvl}', ip='{$this->test['IP']}', 
     time='{$this->test['time']}', 
     linechat='{$this->test['msg']}' 
     WHERE user='{$this->test['name']}'");

我是初学者所以请告诉我什么是必须的^^

我试过这个

$fixchat = mysql_real_escape_string($this->test['msg']);
$fixname = mysql_real_escape_string($this->test['name']);

$db->query("UPDATE members set id='{$this->test['id']}',
     lvl='{$this->userlvl}', ip='{$this->test['IP']}', 
     time='{$this->test['time']}', linechat='{$fixchat}' 
     WHERE user='{$fixname}'");

但是我收到了这个错误:

  

警告:您的SQL语法有错误;检查与您的MySQL服务器版本相对应的手册,以便在第1行的''\ wellington \''附近使用正确的语法...

2 个答案:

答案 0 :(得分:0)

$this->test数组中的一个或多个值中包含双引号字符。查询字符串的每个动态元素都必须通过相应的转义函数(在您的情况下为mysql_real_escape_string())进行转义。这将转义引号,以便正确解释字符串。

旁注:您应该使用mysqli PHP库而不是不推荐使用的mysql。此外,更好的替代解决方案是使用参数化查询。

答案 1 :(得分:0)

解决方法:addslashes函数

$fixchat = addslashes($this->test['msg']);
$fixname = addslashes($this->test['name']);

$db->query("UPDATE members set id='{$this->test['id']}',
     lvl='{$this->userlvl}', ip='{$this->test['IP']}', 
     time='{$this->test['time']}', linechat='{$fixchat}' 
     WHERE user='{$fixname}'");