最近パソコンをMacに変えてMAMP環境で学習しています。
PHPからDBに接続する時、ちょっとハマってしまった点があったのでこちらに忘備録も兼ねて記載しておきます。
PDOの引数
PHPでPDOのオブジェクトを生成してデータベースに接続する際には、引数として以下のように3つ必要です。ちなみにPDOはPHP Data Objectの略でPHPでデータベースを扱うときにオブジェクトになります。
PHP
new PDO('接続文字列','ユーザー名','パスワード')
XAMPP環境
WindowsではXAMPP環境で以下の記述でデータベースに接続できていました。
PHP
<?php
try{
$db = new PDO('mysql:dbname=mydb;host=127.0.0.1;charset=utf8','root','');
} catch(PDOException $e) {
echo 'DB接続エラー:'.$e->getMessage();
}
?>
MacでのDB接続エラー
MacでもMAMP環境で同じようにやればいいかなと思い、同じ記述でデータベースに接続してみたところまさかのエラー
DB接続エラー:SQLSTATE[HY000] [2002] Connection refused
MAMP環境
どうやらMAMP環境ではPDOの引数の記述が違うようで、正しくは以下の通りです。
PHP
<?php
try{
$db = new PDO('mysql:dbname=mydb;host=localhost;charset=utf8','root','root');
} catch(PDOException $e) {
echo 'DB接続エラー:'.$e->getMessage();
}
?>
PDO接続文字列のところで、host=に後に続くのがXAMPPでは127.0.0.1
なのに対して、MAMPではlocalhost
になります。またパスワードがXAMPPでは''(空文字)
なのに対して、MAMPでは'root'
になってます。これは初期値となっておりこちらも変更しないといけません。
参考書やテキストではXAMPP環境での記述が多いので、MAMP環境で接続エラーになっている人がいたらとりあえずhostをlocalhostに、パスワードをrootにしておけばOKです。
以上!!