結論
PHP 7
に適したコードではなかった*1。
ダメだった場所を箇条書き
1. mysql モジュールを使っていた
ドキュメントに思いっきり書いてあります。
mysqli か PDO_MySQL のどちらかを使うことをおすすめします。 古い mysql 拡張モジュールを新規開発で使うのはおすすめしません。 というのも、これは PHP 5.5.0 で非推奨となり、PHP 7 で削除されたからです。
2. 文字コードを明示的に設定していなかった
いかんせん2年以上前の設計であったため*2、データベースの文字コードが、Default Charset
がutf8
、Default Collation
がutf8_general_ci
となっていました。したがって、set_charset
メソッドを明示的に書く必要がありました。
$mysqli = new mysqli("server_address", "username", "password", "database_name");
$mysqli->set_charset("utf8");
ただ、昔はちゃんと動いていたので、本質的に何が原因なのかは完全に追えていません*3*4。そもそもこの場合はPHP 7
は関係ないとは思います。
備考
環境が変わると怖い、ということです。