【解決方法と原因】PHPでConnection failed: SQLSTATE[HY000] [2002] のエラー

php_db_connect_error

PHPでConnection failed: SQLSTATE[HY000] [2002] のエラー

いちばんやさしいPHPの教科書」のテキスト通りに、Chapter4のデータベースに接続しようとしてMySQLに接続できない現象の解決方法を記載していきます。

エラーコード

を出力しました。どうやらMySQLの接続に失敗しているらしいです。

問題の原因

エラー箇所はPDOをnewしている行、らしいですが、原因が不明だったため、try catch構文を入れ、エラー原因をgetMessage()で取得しました。
すると、MySQLの8888のポートに接続しようとしたものの、実際は8889に設定されているので接続できない、ということでした。 

問題のコード

下のコードの、

が問題の箇所。port=8889などの指定がない場合、デフォルトの8888になります。

解決法は、MySQLのポート番号の設定を確認し、コードの方をそれに合わせてやれば良いかと思います。
私の環境はMAMPなので、

問題のMySQLポート番号の設定

MAMPで見たときの、各ツールのPort番号
MySQLポート設定の間違い

以下のように、コードのMySQLのportを8889に指定したところ、エラーが消え正常に実行結果を表示しました。

誤:

正:

参考(stackoverflow)
stackoverflow.com

まとめ

PHPでConnection failed: SQLSTATE[HY000] [2002] エラーが出た時は、MySQLに接続できないエラーのため
ポート番号、接続時のID、パスワードが合っているかを確認するといいかと思います。