DB挿入時のエスケープ文字の扱い

PHPでのPOSTデータは、php.iniがデフォルトの状態なら、
magic_quotes_gpc がOnなので、
自動的に、addslashes()が適用される。
つまり、POSTデータをechoで出力したら、バックスラッシュが入ってるっつーことやね。
で、DBにそのデータを叩き込むと、通常DB側で勝手にバックスラッシュを除去して代入する。
どういうことかというと

フォームで
hoge'hoge
と入力すると、
POSTで受け取った結果は
hoge'hoge
になってるわけ。
これをDBに代入すると
hoge'hoge
として代入されるってこと。
が、DBの型がvarchar binary型とかだったら、話は別。
binaryデータとして扱うので、DB側でバックスラッシュもそのまま代入します。
よって
hoge'hoge
を代入すると
hoge'hoge
としてDBに格納される。

ということで、binary型があると、ハマる場合があるので注意。

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です