0

为什么这个:

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

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

4

2 回答 2

1

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

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

于 2012-12-10T14:55:33.007 回答
1

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

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

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

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

希望这是有道理的。

于 2012-12-10T14:57:09.220 回答