3行で
- ClearDBのアドオンでMySQLを使う
- Heroku公式のやり方でMySQLからデータを持ってくる
- 文字コードを指定する
環境
PHP, Heroku, ClearDB, Mac
文字化け
HerokuとMySQLを同期するやり方は割愛。
Heroku公式のやり方でを参考にMySQLからデータを持ってくる。
<?php
$url = parse_url(getenv("CLEARDB_DATABASE_URL"));
$server = $url["host"];
$username = $url["user"];
$password = $url["pass"];
$db = substr($url["path"], 1);
$conn = new mysqli($server, $username, $password, $db);
?>
原則ここに書いてある内容はいじらなくてよい。
例えばカッコの中身をデータベース名やユーザー名に変える必要はない。
しかしこの形でデータベースから日本語のデータを持ってくると『?????』 といった形で出力されてしまう。
これでイケるかと思ったけどダメだった。
解決
$conn = new mysqli($server, $username, $password, $db);
$conn->set_charset('utf8');
文字コードを指定してあげる。これだけ。
教えていただいて解決したんですが、これを参考にするべきだったのかも。
mysqli::set_charset - PHP.net
https://www.php.net/manual/ja/mysqlinfo.concepts.charset.php