スポンサーサイト

上記の広告は1ヶ月以上更新のないブログに表示されています。
新しい記事を書く事で広告が消せます。

[PHP] mysql_escape_string って何してんのというメモ

いちおうスクリプトを組んでサーバにおいてはいるものの、Webページで開かれるのってどうなのっていう内容だったので結果だけざっくりとメモにしておきます。

mysql_escape_string() は使用が非推奨となっていて、「カレントの文字セットを考慮したエスケープを行う」 mysql_real_escape_string() を使えとなっていますが、だいたいの動きとしては同じようなものなのでその動作を見ておくのは損にはならんだろうということで。

いくつか文を与えてみるとこんな感じ。


[!"#$%&\'()=~|`{+*}<>?_]
 → [!\"#$%&\\\'()=~|`{+*}<>?_]
[たとえば普通の日本語の文]
 → [\た\とえ\ば普通\の日本�\��\の文]
[Mr.Fukusui did not go home in Bon.]
 → [Mr.Fukusui did not go home in Bon.]
[ダメ文字的なもの:能表暴]
 → [\ダ\メ文字\的\なも\の�\��\能表\�\�]



それぞれの文字で見たかったので、文字コードを数値としていくつか回してみるとこんな感じ。
変換前と変換後で違ったものだけピックアップ。


0(0) [�] → [\0]
10(A) [ ] → [\n]
13(D) [ ] → [\r]
26(1A) [] → [\Z]
34(22) ["] → [\"]
39(27) ['] → [\']
92(5C) [\] → [\\]



[0x00] ... NULL (\0)
[0x0A] ... LF 改行
[0x0D] ... CR 復帰
[0x1A] ... 置換 (EOFとして多く使用される)
[0x22] ... ダブルクォート
[0x27] ... シングルクォート
[0x5C] ... バックスラッシュ(\)

 試せるサーバで pg_escape_string() が使えなかったので、そっちは試していませんがほぼ同内容かと思われます。どっちにしても日本語環境で使うには癖があるので、自前で同様のものを作ったほうが無難かなあと思われます。
 普通の Webシステムであれば、「"」「'」「\」を処理しとけば問題ないようだし。

function escapeSqlStr( $str ){
$str = str_replace( "'", "''", $str );
$str = str_replace( "\"", "\"\"", $str );
$str = str_replace( "\\", "\\\\", $str );
return( $str );
}



 こんな感じか。
関連記事
スポンサーサイト

comment

管理者にだけメッセージを送る

検索フォーム
リンク
最新記事
最新コメント
カテゴリ
RSSリンクの表示
上記広告は1ヶ月以上更新のないブログに表示されています。新しい記事を書くことで広告を消せます。