【PHP】PDOでデータベースに接続する方法

こんにちは、ぱすたです!今HTML/CSSと並行してPHPの勉強もしています。

ぱすた

PHPからデータベースに接続するには、PDOを使った方法が一般的です。

私はデータベースを管理するのにMySQLを使っているので、この記事ではPDOでMySQLに接続する方法を紹介します。

※PHPのバージョンは8.08で、MAMPを使用しています。

初心者で技術メモとして残しているので、間違っているところがあったらすみません(-。-;

PDOとは

PDO(PHP Data Object)は、PHP5.1.0から使えるデータベースに接続するためのクラスです。

PHP5以前はデータベースの種類によって、関数を使い分けて接続する必要がありました。

PDOだとMySQLだけでなく、PostgreSQLやSQLiteなど異なるデータベースにも接続できるので便利です。

PDOは元々PHPで定義されているクラスなので、インスタンスを生成することでクラスに定義されているメソッド(関数)を使うことができます。

PHPクラスで利用できるメソッド↓

参考 PDOクラスPHPマニュアル

PHPからMySQLに接続

あらかじめデータベースを作っておきます。名前はmydbにしました。

ソースコード

<?php
$dsn = 'mysql:dbname=mydb;host=127.0.0.1;charset=utf8';
$user = 'root';
$password = 'root';

try {
  //PDOクラスからインスタンスを作って、変数に代入(これでデータベースへの接続完了!)
	$db = new PDO($dsn, $user, $password);
  
} catch (PDOException $e) {
  //データベースへの接続が失敗した場合、エラーが表示される
	echo 'DB接続エラー:' . $e->getMessage();
}
?>

コードの説明

try catchで例外処理

try {
    //データベースに接続できれば、ここの処理が実行される
} catch (PDOException $e) {
    //接続できなかった場合、ここの処理が実行される
}

try catch()構文で、データベースに接続できなかったときエラーが出るようにします(例外処理とも呼ばれます)。

PDOExceptionはPDOでどんなエラーが起きたか表すクラスで、そのインスタンスが$e(変数)に代入されます。変数名は自由ですが、慣習的に$eになってるらしい。

catch{}の中にはデータベースに接続できなかったときの処理を書く。

echo 'DB接続エラー:' . $e->getMessage();

getMessage()は例外メッセージを取得するメソッド。$eにあるエラーメッセージを受け取って、echoでブラウザに表示します。

パスワードやコードが間違っていると、ブラウザにエラーを表示する↓

PDOクラスからインスタンスを作る

PDOクラスからインスタンスを作ることで、データベースに接続できます。

インスタンス(変数) = new PDO(データソース名、ユーザー名、パスワード);

データソース名はMySQLの場合こうなります↓

mysql:dbname=データベース名;host=127.0.0.1;charset=utf8

127.0.0.1は自分を意味するIPアドレスです。127.0.0.1だとエラーになる場合、host=localhostだと動くみたい。ユーザー名、パスワードの初期値はrootなので、rootにします。

まとめるとこうなります↓

$db = new PDO('mysql:dbname=mydb;host=127.0.0.1;charset=utf8', 'root', 'root');

インスタンス(変数名)はデータベースの頭文字を取って、$dbとすることが多い。

これでもOKですが、ちょっと長いのでデータソース名、ユーザ名、パスワードを変数に代入してPDOに接続します。

$dsn = 'mysql:dbname=mydb;host=127.0.0.1;charset=utf8';
$user = 'root';
$password = 'root';

$db = new PDO($dsn, $user, $password);

これでスッキリしました!データベースへの接続は完了です!

まとめ

PDOでデータベースに接続するコードをまとめるとこうなります↓

<?php
$dsn = 'mysql:dbname=mydb;host=127.0.0.1;charset=utf8';
$user = 'root';
$password = 'root';

try {
	$db = new PDO($dsn, $user, $password);
  
} catch (PDOException $e) {
	echo 'DB接続エラー:' . $e->getMessage();
}
?>

このようにPDOを使えば少ないコードでPHPからデータベースに接続できます。

これでPHPからデータベースを操作できるようになります(データの挿入や更新、削除など)。データベースの操作については、また別記事にしたいと思います。

この記事が参考になれば幸いです!