字符串被转义时MySql错误?

时间:2012-12-10 14:52:58

标签: php mysql

为什么:

$query = "SET NAMES 'utf8'";
$query = str_replace("'", "\'", $query);
$pdo->query($query);

会引起问题吗?

我目前收到此错误:

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 '\'utf8\''

如果我不逃避它,一切都很好,但进一步查询存在问题!

2 个答案:

答案 0 :(得分:1)

您尝试运行的sql是完全安全的,它不包含用户输入,因此可以在不转义的情况下运行。

此外,您实际上是在转义字符串的分隔符,而不是字符串本身的值。

答案 1 :(得分:1)

您不必转义查询中的每个引用,有些是有效的,例如:

UPDATE table SET field='blah' WHERE id=10

其中field是varchar或类似的。如果它们需要成为字段值的一部分,您将转义引号,例如:

UPDATE table SET field='This \'value\' uses quotes.' WHERE id=10

希望这是有道理的。