« The Da Vinci Code | トップページ | 焼きするめげそ »

2006年3月14日 (火)

pg_escape_string

某社にオイラがボランティア的に作った案件管理システム永遠のβ版をお使いの方から問合せ。
「なんかエラーが出たんですけど、私なんかしちゃったでしょうか?」

これまで数ヶ月問題なく稼動してたので彼女はシステム壊したかと思ったらしいのだけど、ログを見るとDBへのinsertでこけたらしい。varchar に文字列を入れようとしているのだけど、当該SQLみると
'松竹芸能\'
なんで逆スラついてますか?てか、その手のはEscapeしたはずだけどなぁ…

「最後に\マークつけませんでしたか?」と聞いても「つけてないと思う」との返事。そりゃそうだな。わざわざつける訳ねーか。んーむ、ということで探してみると全く同じことで記事を書いてる御方がいる。
やっぱそうか。SJISか。と思ってみる。SJIS相手だと pg_escape_string がきちんと動かないらしい。mysql_escape_string も同じじゃなかろうか。

携帯向けのサイト作ったりしてると、結局SJIS使うこと多いのね。なんか癖みたいになっちゃって。
ということで pg_escape_string で処理してたところを全部自前で書き換え。

function escape_pg_str($str) {
return mb_convert_encoding(pg_escape_string(mb_convert_encoding($str, "EUC-JP", "SJIS")), "SJIS", "EUC-JP");
}

SJIS専用で美しくないし、ちょっとしたゴミが着く事があるかもしれないけど、とりあえずのWork Aroundということで。

|

« The Da Vinci Code | トップページ | 焼きするめげそ »

てっく」カテゴリの記事

コメント

コメントを書く



(ウェブ上には掲載しません)


コメントは記事投稿者が公開するまで表示されません。



トラックバック

この記事のトラックバックURL:
http://app.f.cocolog-nifty.com/t/trackback/232324/37749202

この記事へのトラックバック一覧です: pg_escape_string:

« The Da Vinci Code | トップページ | 焼きするめげそ »