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 に答える