SQLのエスケープ

取得してきたデータをSQLで叩き込んでたところ、エラー。中身をみたら、「'」が入っていた。
文字列リテラルの終端を「'」で閉じるというルールを考えればエラーは当然。
じゃあ、どうやってエスケープすればいいの?というところがはじまりでした。


▽そろそろSQLエスケープに関して一言いっとくか (徳丸浩の日記)
 http://www.tokumaru.org/d/20080601.html


SQLインジェクション対策 (徳丸浩の日記)
 http://d.hatena.ne.jp/cast_everything/20090607


おお、SQLインジェクションってそういう意味だったのか!<ぉぃぉぃ


SQLインジェクション以前にちゃんとエスケープしたかっただけなのですが、この機会に学べてよかったです。わかりやすかった。


そこでPostgreSQL用のpg_escape_string()同様、MySQL用のmysql_real_escape_string()があったので、これを使うということで解決。

データの安全性を確保するため、MySQL へクエリを送信する場合には (わずかな例外を除いて)常にこの関数を用いなければなりません。


PHP: mysql_real_escape_string - Manual
 http://jp.php.net/manual/ja/function.mysql-real-escape-string.php


ってぐらい必要不可欠なら、PHPMySQLの入門サイトも、 mysql_real_escape_string()込みでサンプルを書いてくれればいいのにねーとか思っちゃう(こら)。嘘です、いつも感謝しています。自分で問題に直接ぶつからないとちゃんと理解できないからこれでいいのです。多分


他人様に迷惑をかけないように注意しなければ……。