<?php
header("Content-Type: text/html; charset=UTF-8");
//------------------------------
// レンタルサーバーに合わせて書き換える
//------------------------------
//MySQLホスト名
$host = "mysql1.star.ne.jp";
//データベース名
$dbname ="test_db";
//MySQLユーザ名
$user = "test_db_user";
//MYSQLのパスワード
$password = "xxxxxxx";
//-----------------------------
$dsn = "mysql:host=".$host.";dbname=".$dbname;
try {
$dbh = new PDO($dsn, $user, $password);
} catch (PDOException $e) {
echo 'Connection failed: ' . $e->getMessage();
}
echo '<br/>';
echo '上記にメッセージが表示されてなければ、接続に成功しています';
・PHP: PDO::__construct - Manual
マニュアルのサンプルほぼそのままですが、上記のようなコードでMYSQLに接続できます。
バリューサーバーの場合は、$host = "localhost"; でMYSQLに接続できます。同一サーバーにDBサーバーが存在するので・・。
エラーが出る
Connection failed: SQLSTATE[HY000] [2005] Unknown MySQL server host 'xxxxxxxx' (2)
みたいなエラーが出る場合は、接続に失敗してます。見直してください。
$e->getMessage();で出力してるメッセージは、MYSQL側から返されたエラーをそのまま表示しているようです。
・MySQL :: MySQL 5.6 リファレンスマニュアル :: B.3 サーバーのエラーコードおよびメッセージ
上記のマニュアルも参考にして、原因を取り除いてください。
SQLSTATE[HY000] [2005] または SQLSTATE[HY000] [2002]
MySQLホスト名 $host の値が正しくない。正しいホスト名を調べてください。レンタルサーバーとMYSQLが同一のサーバーなら、localhostでもOKだと思います。
レンタルサーバーによっては、MYSQLサーバーとWebサーバーが別になってる場合があるので、その場合はMYSQLサーバーのほうのホスト名を指定してください。
SQLSTATE[42000] [1044]
データベース名 $dbname の値が正しくない。
SQLSTATE[28000] [1045]
MySQLユーザ名 $user か MYSQLのパスワード $password が正しくない。もしくは両方とも正しくない。
MYSQL(DB)に接続できるユーザー/パスワードなので、他の関係ないユーザー/パスワードを指定しても接続できません。
あと、MySQLユーザ名にDBアクセスする権限がない場合もこのエラーになります。
補足
上記のサンプルプログラムで文字化けする
・header("Content-Type: text/html; charset=UTF-8");を書き忘れ
・PHPプログラムファイルを保存する時に、文字コードがUTF-8になっていない
このあたりだと思います。
コメントを残す