2012-04-11 3 views
2

私はmagic_quotes_gpcを無効にしました。データベースに入力されたユーザーは、何もエスケープされていないかのようにアポストロフィがあります。これはmysql_real_escape_stringの通常の動作ですか?

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

は、その後、私はデータベースに挿入し、データベースを示しています。私はmysql_real_escape_stringを適用した後 it's a test

は、それは、it\'s a testことになっていませんか? または\''に変換するデータベース(ここでは、PHPMyAdminを使用していますか)ですか? ありがとうございます。

+0

@decezeで

のみ"it's a test"ストアを実行します。彼は、phpmyadminのデータベースとを述べました。彼は正しい。 – itachi

+0

申し訳ありませんが、間違っていると思います。 – deceze

答えて

3

SQLをエスケープする目的は、SQLのインジェクションを避けることです。 INSERT INTO table VALUES ('it's a test') ..が問題の原因になりますが、エスケープするとINSERT INTO table VALUES ('it\'s a test') ..となり、データベースには「テストです」と挿入されます。

+0

こんにちは、お返事ありがとうございます。私のデータベースのバックスラッシュを見るのに慣れていたため、確認が必要でした。恐ろしいmagic_quotesを使っていました。よろしくご協力ありがとうございます。 – eric01

1

mysql_real_escape_string()は文字を正しくエスケープして正しくDBに配置します。だからあなたはyur DBにバックスラッシュは見られません。

That is, the escaped character is interpreted as if it was not escaped. For example, “\x” is just “x”. 
+0

私は実際にphp.netを見ていましたが、そこにその確認が見つかりませんでした。ありがとう – eric01

+0

あなたは歓迎です –

0

INSERT INTO atable VALUES ('it\'s a test')クエリ:原因MySQLのドク(http://dev.mysql.com/doc/refman/5.1/en/string-literals.html#character-escape-sequences)へ

データベース:)

+0

こんにちは、あなたの応答に感謝します。しかし、データベースからその文字列を選択して表示したいときは、それが 'it \ 'テストとして表示されるのは正常ですか?ありがとう – eric01

関連する問題