如果我有以下内容:
$ common = Amelia的沙子马鞭草
当我尝试进行以下更新时:
$clear=strip_tags($common);
$clear=preg_replace('/[^\w ]/', '', $clear);
$clear=str_replace(' ', '-', $clear);
$clear=str_replace(' ', '-', $clear);
$clear= strtolower($clear);
$sql= "update my_table set sid='$clear' WHERE common= '$common'";
mysql_query($sql) or die("query failed: $sql".mysql_error());
我收到以下错误:
查询失败:update my_table set sid='amelias-sand-verbena' WHERE common= 'Amelia's sand verbena'You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 's sand verbena'' at line 1
为什么我收到此错误?
答案 0 :(得分:2)
试试这段代码。
$clear=strip_tags($common);
$clear=preg_replace('/[^\w ]/', '', $clear);
$clear=str_replace(' ', '-', $clear);
$clear=str_replace(' ', '-', $clear);
$clear= strtolower($clear);
$common=str_replace("'", "\'", $common);
$sql= "update my_table set sid='$clear' WHERE common= '$common'";
mysql_query($sql) or die("query failed: $sql".mysql_error());
答案 1 :(得分:1)
单引号字符是SQL语法的一部分。 如果你在其中一个字符串中有它,你必须用另一个单引号来逃避它。 如果你的字符串是:'abc's lalala'它必须成为'abc'的lalala',这是一个非常常见的问题,可能导致SQL注入问题,所以在你的字符串上使用mysql_real_escape_string(),在{{3}查看它}
答案 2 :(得分:0)
首先,你不要strp或转义引号。 其次,您在查询中缺少一个尾随的单引号。
$sql= "update my_table set sid='$clear' WHERE common= '$common'";
答案 3 :(得分:0)
$safe_common = mysql_real_escape_string($common);
$safe_clear = mysql_real_escape_string($clear);
$sql= "update my_table set sid='$clear' WHERE common= '$save_common'";
这就是你所需要的。 现在请阅读http://nl3.php.net/mysql%20real%20escape%20string和http://nl3.php.net/manual/en/security.database.sql-injection.php。 :)