MAMPでPHPを使ってMySQLに接続する方法を記してます。
PHPでMySQLに接続するデータベースを先にphpmyadmin内に作成しておく必要があります!
-
MySQLにデータベースを作成する方法のメモ(phpMyAdmin)
phpMyAdminのMySQLにデータベースを作成する方法のメモです。 phpMyAdminの管理画面を、先に日本語設 ...
続きを見る
MAMPでPHPからMySQLに接続するにはPDO使う
MAMPでPHPからMySQLに接続するには、PDOオブジェクトを利用します。
PDOとは「PHP Data Objects」の略称で、PHP5.1から標準で利用できるようになったオブジェクトです。
将来データベースが代わって接続先が変更となっても、PDOで指定するパラメーターの変更を行うだけで接続可能になる便利なオブジェクトみたい。
今回はphpMyAdminにあらかじめ作成しておいた、以下データベース(mydb)に接続していきます!
PHPでMySQLに接続するPDOオブジェクトの記述方法
PDOの記述例は以下のとおりです。
<?php
$db = new PDO('mysql:dbname=mytable;host=localhost;,$user,$pass);
?>
参考:接続、および接続の管理
基本的に、
- dbname=接続先のデータベース名
- host=loaclhost
- $user
- $pass
上記の各パラメーターの指定は必須です。
MySQL接続時のエラー処理も同時に設定しておく
PHPからMySQLへ接続する際に、PDOのパラメーターの指定が間違っていると例外となるエラーが表示され、ユーザーIDやパスワードがバレてしまうことも想定されます。
そのためPDOにてMySQL接続を行う際は暗黙的に、「try catchブロック」などでエラーを処理の中でキャッチする指定を行います。
PHPでMySQLに接続するPDOの書き方サンプル
PHPからMySQL接続をPDOを使って、エラー時の例外処理を加えて書いてみました。
phpMyAdmin内に用意した、「mydb」というデータベースに接続してみます。
<?php
try {
$db = new PDO('mysql:dbname=mydb;host=localhost;charset=utf8','root','root');
echo "接続OK!";
} catch (PDOException $e) {
echo 'DB接続エラー!: ' . $e->getMessage();
}
?>
接続が上手くいっていれば「接続OK!」という処理が表示されます。
上記結果が記されるように、index.phpにhtmlを記述しています。
<title>PHP</title>
</head>
<body>
<header>
<h1 class="font-weight-normal">PHP</h1>
</header>
<main>
<h2>Practice</h2>
<pre>
<?php
try {
$db = new PDO('mysql:dbname=mydb;host=localhost;charset=utf8','root','root');
echo "接続OK!";
} catch (PDOException $e) {
echo 'DB接続エラー!: ' . $e->getMessage();
}
?>
</pre>
</main>
</body>
PDOで接続が上手くいかないときに考えられること2つ
先のとおりに実行すればPHPからMySQLへの接続は上手くいくと思いますが、自分でも接続できなくてハマったポイントが2つありました。
- hostに127.0.0.1を設定している
- $passのパスワードを入力してない
ちょっとハマったところを説明します。
1. hostに127.0.0.1を設定している
「127.0.0.1」とは、IPアドレスで自分自身を意味するIPアドレス(ループバックアドレス)です。
僕は環境がMacなのですが以下のように書いても...
$db = new PDO('mysql:dbname=mydb;host=127.0.0.1;charset=utf8','root','root');
MySQLに接続できませんでした。
DB接続エラー!: SQLSTATE[HY000] [2002] Connection refused
PHPのMySQL接続を参考にしている資料によっては、ループバックアドレスによる接続方法を紹介しているため、ハマってしまうかも。
2. $passのパスワードを入力してない
以下構文の「$pass」の部分を設定せず、
$db = new PDO('mysql:dbname=mytable;host=localhost;,$user,$pass);
空白にして接続を実行してみるとMAMP環境では...
$db = new PDO('mysql:dbname=mydb;host=localhost;charset=utf8','root','');
接続エラーとなってしまいました。
DB接続エラー!: SQLSTATE[HY000] [1045] Access denied for user 'root'@'localhost' (using password: NO)
MAMPを利用しているときは、$user・$passに'root'を設定してあげることでひとまず解決しました。
まとめ
PHPでMySQLにPDOを使って接続する方法を紹介しました。
PDOの接続のところで、特に「ループバックアドレス」を設定するときに、PCの環境によってはハマってしまう人もいるかもです。
-
【MAMP】PHPでMySQLにデータを追加する方法(phpMyAdmin)
MAMPのMySQLにPHPからデータを追加する方法を記してます。 補足 PHPでMySQLに接続する方法について理解し ...
続きを見る
関連記事:【phpMyAdmin】データのエクスポートをCSVで行う方法
関連記事:【MySQL】LIMIT句の使い方。データ取得の上限を指定する方法
関連記事:【MySQL】WHERE・AND・ORを使ったデータ検索の方法(phpMyAdmin)