MySQLにPEAR::DBを使用して、データ追加を行ったら、文字化けした際のメモ
MySQL:5.5
MySQLの文字セット:utf-8
さくらインターネット使用
以下、簡単なソースです
[php]
require_once 'DB.php';
$dsn = 'mysqli://ユーザ名:パスワード@ホスト名/DB名';
$db = DB::connect($dsn);
if (PEAR::isError($db)) {
die($db->getMessage());
}
$db->query('SET NAMES utf8');
if (PEAR::isError($db)) {
die($db->getMessage());
}
$table_name = 'users';
$fields_values = array(
'name' => $name,
'display_name' => $disp
);
$res = $db->autoExecute($table_name, $fields_values, DB_AUTOQUERY_INSERT);
if (PEAR::isError($res)) {
die($res->getMessage());
}
$db->disconnect();
[/php]
普通のサンプルだとinsert文を使って実行しますが、autoExecの方が、挿入カラムとパラメータのマッピングが分かり易くて好きです
たまにカンマひとつズレてて、キィーーーーッ!!となりますしw
で、肝心な肝は
[php]
$db->query('SET NAMES utf8');
[/php]
の部分
恐ろしくあっさりできましたけど、実に悩んだのは"utf8"というところ
最初
[php]
$db->query('SET NAMES utf-8');
[/php]
って、ずっと書いてておかしいなーと思ってたんですが...