エスケープしても、MySQLに格納されるのは本来のデータである件
わかってしまえば当たり前のことなんですが(^^;;)、果てしない思い違いをしていたのでメモしておきます。
経緯
デバッグ用にとりあえず本番でも使えるデータをExcelで予め大量に用意し、phpMyadminを通じてCSVで一度にインポートしようと思いました。
ところでphpでSQLを書いてデータを叩き込むには、mysql_real_escape_stringでエスケープする必要があります。
そこでphpMyadminでインポートするとき、エスケープしてくれるかどうかわからなかったので、あれこれ調べはじめました。
この段階では、エスケープしたSQLでデータを叩き込んだ場合、エスケープされた文字がそのままMySQLに記録されると思っていました。つまりMySQLに入れる時にエスケープ、取り出す時には案エスケープ(?)が必要かと思っていたのです。
ですから、万一phpMyadminでインポートしたデータがエスケープされない場合、記録されるデータが異なり、後々PHPで叩き込んだデータとphpMyadminで叩き込んだデータが本来同じであっても違うデータとして扱われてしまうのではないかと懸念したのでした。
結論
杞憂でした。
MySQLでエスケープが必要なのは、記録する段階の問題ではなく、SQLで操作する段階の問題です。したがって、操作する段階でエスケープしたデータをSQLで送り込むと、記録された段階では本来のデータとしてアンエスケープ(?)して記録される、ということなのでしょう(根拠をみつけられませんでした)。
だから矛盾は生じない。
▽プラグイン制作でハマッたよ[4](Nucleusだとか)
http://datoka.jp/old/nuc/tips/870.html
※MySQLから値を取り出したときのアンエスケープ方法
そもそもphpMyadminだってphpでSQL書いてySQLを操作するわけですから、必要であればエスケープしているはず……ですよねぇ(未確認)。
さっさとインポートしよっと。