仕事でずいぶん前に作られたPHPをいじっていました。
DBの型も、PHPの入力チェックも通っているのに
なぜかSQLエラーが出ていたので調べてみました。
諸悪の根源はPHPファイルがSJISだったことであるようです。
エラーを出している部分は以下の部分でした。
$hoge = mysql_escape_string($hoge);
こうするとPHPファイル自体がSJISの場合、
$hogeに¥(円マーク)が入ってしまうケースがあり、
SQLエラーが起こっていました。
そこで以下に変更しました。
mysql_set_charset(‘sjis’);
$hoge = mysql_real_escape_string($hoge);
mysql_real_escape_stringは
mysql_set_charsetの文字コードを見て$hogeを変換してくれるそうです。
ちゃんとした作りにしようと強く実感しました(苦笑)
コメント