PHPでPDOを使ってデータベースに接続する方法
こんにちは。あっきーです。
21歳でニートしながら、プログラミングと英語の勉強をしています。
今回はPHPでデータベースに接続する方法を紹介していきます。
PHPはサーバー上にある情報を取得したり、データベースに情報を追加したりできる言語です。
なのでデータベースに接続することは頻繁にあり、webサービスを作る際には必須です。
これをマスターしていきましょう。
データベース接続にはPDOを利用する
「データベース 接続」などと検索するといろいろな方法が出てくるんですが、PODというものを利用するのが一般になっているようです。僕もこれを使っています。
ちょっとだけ解説。
PDOは「PHP Data Objects」の略称で、ざっくり説明すると「PHPと全データベースの仲介役」です。
データベースっていろんな種類があって、”Oracle Database”, “MySQL”, “PostgreSQL”などなどあります。
普通データベース接続となると、それぞれが持つ関数を利用する必要があります(例えばmysqlに接続したいならmysqli_conntent
を使う)。
ですが、PDOを使うとすべてのデータベースに接続できるようになります。
- PHPでPDOに接続(同じ命令)
- PDOが各データベースの仲介になってそれぞれに接続できる
PDOを使えるとデータベースを変えることになった(ヤバい!)という場合でも対処できます。接続の命令は同じだからです。
若干レベルは高めですが、慣れれば便利なので、これを使って接続をしてみます。
PDOによるデータベース接続方法
先にコードをお見せします。
$host='localhost';
$db = 'データベース名';
$user = 'ユーザー名';
$pass = 'パスワード';
$charset = 'utf8mb4';
$dsn = "mysql:host=$host;dbname=$db;charset=$charset";
$options = [
PDO::ATTR_ERRMODE => PDO::ERRMODE_EXCEPTION,
PDO::ATTR_DEFAULT_FETCH_MODE => PDO::FETCH_ASSOC,
PDO::ATTR_EMULATE_PREPARES => false,
];
$pdo = new PDO($dsn, $user, $pass, $options);
一番最後の行でPDOの接続をしています(PDOクラスというものを変数に代入している)。
new PDO()
の()内にいくつか書かないといけないので、それらを上で設定しています。
PDO接続に必要な情報
()内には以下の情報が必要です。
- 1.
$dsn
:データ元の名前→MySQLを設定 - 2.
$user
:MySQLのユーザー名→XAMPP設定時に登録したもの - 3.
$pass
:MySQLのパスワード→XAMPP設定時に登録したもの - 4.
$options
:PDOに関するモード→エラーの出し方や、データ取得時の配列の形の設定
DSN設定
最初にDSN(データ元の名前)を設定します。つまり「MySQLだよ!」と伝える設定です。
形は決まっていてこんな感じです。
$host='localhost';
$db = 'データベース名';
$charset = 'utf8mb4';
$dsn = "mysql:host=$host;dbname=$db;charset=$charset";
一番最後の$dsn
というところがMySQLの宣言になるんですが、形がこうなってます。
- 1.
host
:ホスト名→ローカル環境では’localhost’でOK - 2.
dbname
:データベース名(自分で設定) - 3.
charset
:文字設定→’utf8mb4’でOK
データベース名だけ各自設定していただければコピペでOKです。
データベース名というのは例えば図のような名前です。
XAMPPからMySQLにログインしたときに、左側に出るものがデータベース名です。僕の場合、’phplogin’というデータベースを作成したのでこれを利用しています。
ユーザー名とパスワード設定
これはXAMPPでMySQLにログインするときに入力するものを使えばOKです。
オプション設定
最後にオプション設定です。これは説明すると長くなるので、「PDOの詳しい解説」の方でお話します。
今回紹介したオプション設定が一番有効的だと思うので、こちらもコピペOKです。
$options = [
PDO::ATTR_ERRMODE => PDO::ERRMODE_EXCEPTION,
PDO::ATTR_DEFAULT_FETCH_MODE => PDO::FETCH_ASSOC,
PDO::ATTR_EMULATE_PREPARES => false,
];
これで接続はOKです。この部分を外部関数などでまとめておくと、どのファイルからも使えて便利になるので試してみてください。
例外処理(try-catch)はしなくていいの?
よくデータベース接続とセットで出てくるのが、例外処理というもので、よくこんな形で出てきます。
try {
// MySQLへの接続
$dbh = new PDO('mysql:host=localhost;dbname=test', $user, $pass);
} catch (PDOException $e) {//PDOException(例外処理)をキャッチ
$e->getMessage()
exit;
}
これは「PDO接続に失敗したらエラーメッセージを出すよ」というものなんですが、実は必要ないんです。
というより、使ってはいけません。
理由は2つあって
- そもそもtry-catchを使わなくても標準でPHPがエラーを出してくれる
- try-catchを使うと何がエラーなのかが見えにくくなる→修正しにくい
try-catchは無視して素直にデータベース接続をしておけば問題ないということです。
これはよくある間違いなので注意しておきましょう。
まとめ
というわけで、今回はPDOによるデータベース接続について解説しました。
Webサービスを作りたい人はこれを理解した上で実践していきましょう。
それでは。
スポンサードサーチ
人気記事英語学習用SNSをLaravelで作ってみた【システム解説あり】