PHPで、MySQLのデータベースにアクセスするのの
PDOを使ってできだしましたが、
データをインサートしたときに、文字化けが発生しました。
結論は、PHPのバージョンによって、多少ソースの書き方を
かえないといけないんだということがわかりました。
他のサイトをコピーしたものを、ここに貼り付けるのは
いけないかも知れませんが、勉強のためと
覚え書きのために、ご了承ください。
SET NAMES UTF8
を使用していいのかどうかはよくわかっていませんが、
テーブルの文字コードがUTF-8
ブラウザのエンコードもUTF-8
であっても、文字化けがおきてしまうのには
すこし驚きました。
----------
PDO使って、MySQLに日本語データ突っ込んだら、文字化けして、困ってました。
PHPのバージョンが5.3.6以上の場合は
こんな書き方でいいです。
$pdo = new PDO(mysql:host=host;dbname=dbname;charset=utf8,'user','password');
$sql = 'SELECT * FROM test_tables';
$stmt = $pdo->query($sql);
PHPのバージョンが5.3.6未満の場合は
$pdo = new PDO(mysql:host=host;dbname=dbname,'user','password');
$sql = 'SELECT * FROM test_tables';
$stmt = $pdo->query('SET NAMES utf8');
$stmt = $pdo->query($sql);
がいいです。
SET NAMES 文字コードについては以下に詳しい説明がありましたので、そちらを参照ください。
----------
ちなみに、今、私が使っている、環境は
XAMPP for Windows 1.7.3
PHP Version 5.3.1
で、PHPのバージョンが5.3.6未満でした。