これが取引です。ローカル サーバーとリモート サーバーがあり、どちらも 2 つの同一の mysql データベースに接続する同じ php ファイルを実行します。ローカル サーバーで、コマンド
mysql_query("INSERT INTO eventtypes (name) VALUES ('".addslashes($_GET['name'])."')")
魅力のように機能し、フィールドにスラッシュを挿入せず、$_GET['name'] の生の値のみを挿入します。ただし、リモート サーバーでは、スラッシュも挿入されています。私はこれらを試しました:
mysql_query("INSERT INTO eventtypes (name) VALUES ('".str_replace("'","''",$_GET['name'])."')
これは false を返しますが、対応するデータベースのコマンド ラインで正確に返された文字列を実行すると、適切な量の一重引用符が適切に挿入されますが、これは非常に奇妙です。
mysql_query("INSERT INTO eventtypes (name) VALUES ('".mysql_real_escape_string($_GET['name'])."')")
mysql_real_escape_string() は、addslashes() と同様に挿入された単一引用符にスラッシュのみを追加しました。