mysqlからデータを読み込むときの文字化け対策

phpのdefault_charsetはUTF-8
mysql側のdefault-character-setもutf8なのになぜか読み込んだデータが"????"って化ける。

読み込むときに文字コード指定してないから?と思い

SET NAMES utf8

でクエリーを送信したら直った。
でもphpファイルもUTF-8で保存してるのになんで化けるんだろうか。
いろいろ調べてたらSET NAMESは使うな!ということが書いてあった。脆弱性となるらしい↓。

http://blog.ohgaki.net/set_namesa_mcb_asc

なので

mysql_set_charset("utf8");

にした。

SET NAMESって本来はスクリプトで使うんじゃなくてmysqlコマンドラインで使うコマンドみたい。
あとmysql_set_charset関数はphpのバージョンが古いと使えないみたい。
さらにテーブル、カラムを指定してクエリーを送信する直前に書かないといけないみたい。
そうしないと一つ目のカラムから読み込んだデータだけ文字化けが直らない。

mysql_set_charset("utf8");

$result = mysql_query("SELECT people_01,people_02,people_03 FROM $db_table");

こういうこと。