mysql_real_escape_string はバックスラッシュとともにデータをデータベースに保存しています
-
26-09-2019 - |
質問
エスケープされていない文字列で mysql_real_escape_string を使用している場合、データベース内のデータはバックスラッシュを使用して保存されますが、これは起こるべきではありません。
magic_quotes_gpc をオフにしていますが、なぜこれが起こっているのかわかりません。何か案が ?
mysqlデータベースに変更が必要な設定はありますか。
コード内のどこにもアッドスラッシュを使用していません。PHP言語。
助けてください。
解決
非常に侵襲的であり、無効にすることはできませんすべてがmagic_quotesのにはいくつかのバリエーションがあります。私は、余分なエスケープは、DBMSによって行われていること、その可能性は低いと考えています。
あなたがチェック持っているもののようなデータルックスの前のmysql_real_escape_stringの()を適用する - 。私はそのはすでに何とか逃れ賭けるだろうが。
C
他のヒント
答えは簡単です。 変更する必要があるMySQLデータベースには設定がありません。 それはあなたのコード/設定されます。
上のどちらかのHAVE のmagic_quotes_gpc
、それは二重にチェックする必要がある、またはあなたのコードの一部は、別のスラッシングを行います。
Stripslashes()は、PHPディレクティブMAGIC_QUOTES_GPCがオン(デフォルトである)の場合であり、このデータを逃げる必要がある場所(データベースなど)に挿入することはありません。たとえば、HTMLフォームからデータを直接出力するだけの場合。
<?php
$str = "Is your name O\'reilly?";
// Outputs: Is your name O'reilly?
echo stripslashes($str);
?>
ストリップスラッシュを使用すると、入力が何に変わるのかをお知らせください。必要な形式になっていますか。これは、入力の受信に問題がないかどうかを確認するためです。
mysql_real_escape_string を適用しないと、データは blackSlashes なしで保存されると述べたので...それを適用すると、ブラックスラッシュが発生します...個人的には、コードのどこかにアドスラッシュを適用しているかどうかを再確認してください。
いくつかの質問...
- これはこの現在の関数でのみ発生しますか。
- magic_quotes_gpc がオンかオフかを確認してください。
- この問題を引き起こしている機能の一部を投稿していただけますか。