※PHP7.2では、dsnの引数で mysql:dbhost
とすると接続出来ないことコメントで頂きましたのでサンプルコードを修正しました。
公式ドキュメントでもmysql:host
が正しいようです。http://php.net/manual/ja/pdo.construct.php
こんにちは、タカフです。
WordPressのデータベース接続エラーって、無慈悲ですよね。
これが表示された時にゃ絶望感で打ちひしがます。。。
そして、これに限らずPHPでDB接続に失敗する時とか、新規で立てたサーバーからDB接続確認する時とか、そもそもDB接続確認自体出来ているのかって事をサクッと確認したい時、あると思います。
次のコードをコピペしてphpファイルにして設置するとその接続状態を確認することが出来ます。
db_check.php
<?php
// defineの値は環境によって変えてください。
define('HOSTNAME', 'localhost');
define('DATABASE', 'mydatabase');
define('USERNAME', 'root');
define('PASSWORD', '');
try {
/// DB接続を試みる
$db = new PDO('mysql:host=' . HOSTNAME . ';dbname=' . DATABASE, USERNAME, PASSWORD);
$msg = "MySQL への接続確認が取れました。";
} catch (PDOException $e) {
$isConnect = false;
$msg = "MySQL への接続に失敗しました。<br>(" . $e->getMessage() . ")";
}
?>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
<title>MySQL接続確認</title>
</head>
<body>
<h1>MySQL接続確認</h1>
<p><?php echo $msg; ?></p>
</body>
</html>
ターミナルからmysql叩いてもいいんですが、PDO自体入ってなかったりすることもあったりしたので、そういう時のためにもいつでも使えるように記事にしておきます。
現場からは以上です。
手元のphp7.2環境だとコピペしても動きませんでした。
PHPマニュアルを見るにdbhost=ではなく、host=のようだったのでhost=にしたところ、動作しました。
http://php.net/manual/ja/ref.pdo-mysql.connection.php
共有まで。
もりもりさん、ありがとうございます。
僕の方でも試したところ、確かにphp7.2でdbhostでは接続出来ませんでした。
仰る通り公式ページでhostと記述してあるので記事の方も修正しました。
↓ググると同じ問題でハマった人もいるようですね。
https://teratail.com/questions/117320
お手間をとらせてしまいすみませんでした_| ̄|○
[…] 次のコードをindex.phpに書き込みます。コードはPHPのPDOでサクッとMySQLへの接続を確認するコードを参考にしています。 […]
[…] PHPのPDOでサクッとMySQLへの接続を確認するコード […]