2

magic_quotes_gpc を無効にしたところ、何もエスケープされていないかのように、データベースへのユーザー入力にアポストロフィが含まれていることに気付きました。

($_POST['message'])="it's a test";
$string = mysql_real_escape_string(htmlentities($_POST['message']));

次に、それをデータベースに挿入すると、データベースに次のように表示されます。 it's a test

it\'s a test申し込んだからじゃないのmysql_real_escape_string?それとも、それら\'を に変換するのはデータベース (ここでは PHPMyAdmin を使用)'ですか? 前もって感謝します。

4

3 に答える 3

3

SQLをエスケープする目的は、SQLの挿入を回避することです。INSERT INTO table VALUES ('it's a test') ..問題が発生しますが、エスケープするとINSERT INTO table VALUES ('it\'s a test') ..、それが機能し、データベースに「'it'satest'」が挿入されます。

于 2012-04-11T04:40:46.797 に答える
1

mysql_real_escape_string() は文字をエスケープして DB に正しく配置します。したがって、yur DB にバックスラッシュは表示されません。

mysql Doc による (http://dev.mysql.com/doc/refman/5.1/en/string-literals.html#character-escape-sequences):

That is, the escaped character is interpreted as if it was not escaped. For example, “\x” is just “x”.
于 2012-04-11T04:41:53.060 に答える
0

INSERT INTO atable VALUES ('it\'s a test')クエリ実行時

データベースにのみ"it's a test"保存してください:)

于 2012-04-11T04:45:27.967 に答える