PHP+MariaDBでDB連携(文字コード)
・Linuxの場合
「.bashrc」や「.bash_profile」などで、export LANG=ja_JP.utf8
・Windowsの場合
mysqlコマンドを実行する際のコマンドプロンプトのコードページをutf8にする。
・my.ini (xampp\mysql\bin\my.ini) ※linuxでは、my.cnf
[client]
default-charcter-set=utf8
[mysqld]
init-connect=\'SET NAMES utf8\'
collation_server=utf8_unicode_ci
character_set_server=utf8
skip-character-set-client-handshake
character_sets-dir="F:/Program/xampp/mysql/share/charsets"
・DB作成
DBをUTF8で作成すれば、その中に作るテーブルも自動的にUTF8になる。
CREATE DATABASE db名 CHARACTER SET utf8;
PHPの設定
・php.ini
default_charset="UTF-8"
・DBアクセス時
・HTML (PHPで生成するレスポンスHTML)
<?php
header('Content-Type: text/html; charset=UTF-8');
?>
予めDBに次のよう1レコード入れておき、
MariaDB [db002]> select * from tbl;
+----+-----------+
| id | name |
+----+-----------+
| 6 | 日本語 |
+----+-----------+
1 row in set (0.00 sec)
MariaDB [db002]>
次のようなPHPソースで、DBから取得した文字に、"だよ" を足して応答する。
<html>
<body>
<?php
$mysqli = new mysqli("localhost", "user001", "pass001", "db002");
$mysqli->set_charset("utf-8");
$result = $mysqli->query("SELECT name FROM tbl");
$loop=true;
echo "<html><body>\n";
while ($loop) {
$row = $result->fetch_assoc();
if ($row == Null) {
break;
} else {
echo 'name=' . htmlentities($row['name']) . 'だよ<br>';
}
}
$result->free();
$mysqli->close();
echo "</body></html>";
?>
</body>
</html>
---------------------------------------
■ITとことんのトップページ
┗■PHPのトップページ
┗■本ページ