为什么:
$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\''
如果我不逃避它,一切都很好,但进一步查询存在问题!
答案 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
希望这是有道理的。