-2

警告:您的 SQL 语法有错误;检查与您的 MySQL 服务器版本相对应的手册,以获取在“颜色:红色”附近使用的正确语法>

这是我的代码:

$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\'' 附近使用正确的语法...

4

2 回答 2

0

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

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

于 2013-07-25T18:38:04.520 回答
0

解决方法:addlashes 函数

$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}'");
于 2013-07-26T09:04:10.607 回答