1

PDOプリペアドステートメントを使用してデータをMySQLデータベースに挿入していますが、文字列内のアポストロフィ(一重引用符)がバックスラッシュ(\)を前に付けてデータベースに格納されていることに気付きました。

私はstripslashes($string)出力で使用します、そしてもちろんこれはそれらを取り除きます。

サーバーのphpinfo()情報(PHPバージョン5.2.17)で「magic_quotes」を検索したところ、次のことがわかりました。

  • magic_quotes_gpc:ローカル値=オン、マスター値=オン
  • magic_quotes_runtime:ローカル値=オフ、マスター値=オフ
  • magic_quotes_sybase:ローカル値=オフ、マスター値=オフ

まず、magic_quotes_gpcをオフにすると、バックスラッシュの発生を防ぐことができますか?現在、サーバーのphp.iniマスター設定にアクセスできませんが、理解しているように、ディレクティブを使用してルート.htaccessファイルを構成することで無効にできますphp_flag magic_quotes_gpc Off

第二に、データベースでのこれらのバックスラッシュの防止は望ましいですか?ここで「やる前によく考えなさい」というやや不可解な発言を見たので、これをお願いします。

4

1 に答える 1

2

magic_quotes_gpc をオフにすると、バックスラッシュが発生しなくなりますか?

おそらくそうだ。

データベースでこれらのバックスラッシュを防止することは望ましいですか?

はい。それらは何の役にも立ちません。PDO と適切にパラメータ化されたクエリを使用する場合、魔法の引用符が対処するために使用される問題は既に解決されています。

マジック クォートが使用された理由と使用されなくなった理由については、マジック クォートに関する PHP マニュアルを参照してください。

于 2012-06-18T09:00:00.920 に答える