プロが教えるわが家の防犯対策術!

sqliteのエスケープ方法としてPHPマニュアルでは
sqlite_escape_string() を利用することが望ましいと
記述されています。
実際にsqlite_escape_string() を使用してDBに格納するのは
問題ないのですが、データを取り出したときに
エスケープされたままで出てきます。

アンエスケープする方法はどのようなものでしょうか?
str_replace("'","''",取り出した文字列);
とかではないですよね・・・。

A 回答 (1件)

mysqlから取り出してから、unescapeが必要になった覚えがないですけど.


以下の状況なのでは??
http://jp.php.net/manual/ja/function.mysql-real- …
phpマニュアル引用
「 magic_quotes_gpc が有効な場合は、 まず最初に stripslashes() を適用します。そうしないと、すでにエスケープされているデータに対してさらにエスケープ処理を してしまうことになります」
「\n」→ magic_quotes_gpc on「\\n」→ sqlite_escape_string()「\\\\n」
→ mysql 内への格納「\\n」→ 取り出し「\\n」

参考URL:http://jp.php.net/manual/ja/function.mysql-real- …
    • good
    • 0
この回答へのお礼

何度かmagic_quotes_gpcの設定も確認しました。

しかしながら、お恥ずかしいことに
sqlite_escape_string() を 2回かけていたらしく
DBには ' ではなく '' で入ってました。
エスケープされているのだからこれで正しいと思っていました。

実際は ' は エスケープされて '' ですが
DBには ' で入るのですね・・・。

回答ありがとうございました。

お礼日時:2008/06/30 23:11

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!