SQL文のエスケープ方法
SQLで問題となるのは「'」であると思う。「'」は文字列の区切りを示しているので、これをエスケープする必要がある。
そのとき、Cやperlなどでは「\'」とエスケープするが、SQLでは「''」とエスケープするように決められているはず。(はずというのは手元に規約がないので^^;)
ところが、一部RDBMSではCなどと同じように「\'」も許可しているため「\'」でもOKという誤解があるみたい。
http://jp2.php.net/manual/ja/function.addslashes.php
addslashes() の使用例は、 データベースにデータを登録するときです。例えば、 O'reilly という名前をデータベースに挿入するには、 エスケープする必要があります。ほとんどのデータベースでは O\'reilly という具合に \ を使用します。これはデータベースにデータを格納する場合のみ必要です。 追加される \ は挿入されません。 PHP のディレクティブ magic_quotes_sybase を \ にすると、' はもうひとつの ' でエスケープされます。
「\'」でもエスケープできないDBの場合、addslashesを使っても意味がないんだけどorz