最善の解決策 php.ini ファイルで、magic_quotes_gpc ディレクティブが on に設定されている可能性があります。これは、セキュリティ上の理由から無効にする必要があります。php.ini ファイルにアクセスできない場合 (共有ホストなど) は、.htaccess ディレクティブを使用していつでも同じことができます (これが apache サーバーであると仮定します)。
あなたのphp.iniで
magic_quotes_gpc Off
.htaccess ファイル内:
php_flag magic_quotes_gpc Off
なぜこうなった?
これが発生する理由は、次の一連のロジックによるものです。
エスケープが必要な文字列がサーバーに送信されます。これは私のひもです。それは素晴らしいです。Magic Quotes は、コードに到達する前にアポストロフィをエスケープします。これは私のひもです。すばらしい mysql_real_escape_string には、バックスラッシュ \ とアポストロフィ \' の 2 つのエスケープ文字が含まれるようになりました。これは私のひもです。It\\'s awesome この新しいスーパーエスケープされた文字列はデータベースに保存されます。文字列がデータベースから取得されると、stripslashes に渡されます。これにより、手順 3 で追加された 2 つのエスケープが削除されますが、バックスラッシュの 1 つがエスケープされているため、stripslashes はそれが属していると認識します。これは私のひもです。すばらしいです。バックスラッシュの数が増えるたびに、これらの文字列をデータベースに再送信すると、この問題は本当に手に負えなくなります。
代替ソリューション 迅速かつ簡単な代替手段は、文字列を mysql_real_escape_string に渡す前に、magic_quotes によって追加されたスラッシュを単純に削除することです。
$str = stripslashes($code);
$str = mysql_real_escape_string($str);