2013年9月27日金曜日

PHPバージョンの違い

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未満でした。

0 件のコメント:

コメントを投稿