PDOと例外処理とはなんぞや?さらっと解説【PHP】

PHPの勉強してるけど、PDOっていまいち何かわからない。

例外処理って何???

筆者は現在web制作フリーランス2年目でして、webエンジニアの方面へも仕事の幅を広げるためにプログラミングを学習中です。

今回は、自身もあやふやだったPDOクラスと例外処理について解説します。

5分で読めるので、ご興味のある方はぜひ最後まで読んでみてください。

PDOとは?

PDOとは、PHP Data Objects の略で、PHPとデータベースを接続してくれるクラスです。

このクラスのおかけで、データベースに入っているレコードを操作することができるようになります。

データベースには、mysql、PostgreSQL、SQLiteなどのそれぞれ違った種類のデータベースが存在します。

それぞれのデータベースにはそれぞれ扱うための関数があるのですが、PDOはそれら全てのデータベースに対し同じ処理ができる機能を提供してくれます。

万能ですね。ナイス。。。

(PDOを掘り下げていくと、必ずしもデータベースを扱う機能として万能ではないらしい。)

データベースに接続する

実際にコードを例に、データベースに接続する例をみていきます。

データベースはmysqlを使用し、データベース名はmyshopとします。

<?php

try {

    $dsn = 'mysql:dbname=myshop; host=localhost; charset=utf8';
	  $user = 'root';
	  $password = 'root';
	  $dbh = new PDO($dsn, $user, $password); //①
	  $dbh->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);//②
    echo "接続成功\n";

} catch (Exception $e) { //③

    echo '何かしらのエラーが発生しています';
	  echo $e->getMessage();
	  exit();

}

①データベースに接続

$dsn, $user, $passwordの三つの引数に指定している内容でデータベースに接続しています。

$dsn:接続するデータベースの情報
$user:接続するデータベースのユーザー
$password:接続するデータベースのパスワード

setAttributeメソッド

公式サイトでは、setAttributeメソッドについて

PDO::setAttribute — 属性を設定する

php 公式サイト PDO::setAttribute

と書かれています。

いまいちピンときません。

では、なぜsetAttributeメソッドを使うのかを考えてみます。

実は、setAttributeメソッドがなくてもPDOはデータベースへ接続をしてくれます。

ところが、setAttributeメソッドも伴わせて使うことでPDOでデータベースに接続した時のオプションを指定できます。

今回の場合は、

$dbh->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);

と指定しており、これは例外エラーが発生した時に詳細にエラーの内容を表示してくれます。

このように接続時のオプションを提供してくれるのが、setAttributeメソッドです。

③例外処理

例外処理とは?

スクリプトを実行したときにデータベースが存在しない、読み込もうとしたファイルが存在しないなどのエラー(例外)が発生しても正常にスクリプトが動作するようにすることを例外処理といいます。

【PHP超入門】クラス~例外処理~PDOの基礎 第2章 例外処理の基礎

tryの中で何かしらのエラーが出た時に、catchでエラーが発生した際の処理を実行してくれます。

catchで「なんかエラーでとんでワレ!!」という感じて伝えてくれます。

catchの引数のException $eって何?

<?php

try {

} catch (Exception $e) //<---------こいつ 
{ 
    echo '何かしらのエラーが発生しています';
	  echo $e->getMessage();
	  exit();
}

catchの引数にExceptionとありますが、これはPHPに元々ある例外のためのクラスです。

例外が発生した際、Exceptionクラスのメソッドを使うことができます。

今回はインスタンスの$eにgetMessageメソッドを使って、例外が発生した際エラーの内容を表示するようにしています。

まとめ

今回は、PHPのPDOクラスと例外処理について解説しました。

私の理解もまだまだ深いわけではありませんが、さらっと理解したところだけ共有させていただきました。

参考にさせていただいたサイトは分かりやすく解説いただいているので合わせてみていただければ幸いです。

公式サイトもちょっと分かりにくい文言もありますが、公式なので理解に役立つかと思います。

読んでいただきありがとうございました。

参考サイト

PHP: PDO - Manual
PDOの利用 - PHP入門
PDOを使ってデータベースを利用する方法です
【モダンなPHP】PHPでPDOを使ってMySQLに接続する方法!
PHP: 接続、および接続の管理 - Manual
PHPのPDOの使い方を分かりやすく解説する | CodeLog
PHP: PDO::setAttribute - Manual
PHP: PDOException - Manual
PHPのPDOでsetAttributeの意味を知る。 - nicepaper @ ウィキ
今回はPHPのPDOにてsetAttributeの利用方法を記述していきたいと思います。7月27日記事 目次 setAttributeとは PHPマニュアルにて 使い方例 SQL文のエラーを吐く se...
【PHP超入門】クラス~例外処理~PDOの基礎 - Qiita
はじめに 変数と関数の基礎はわかり、クラスも何となく聞いたことがある超初心者向けです。 長いですが、変数と関数しかわからなくても、読めばクラス、例外処理、PDOについて何となくわかるようになると思います。 それ以上の方は、読む...
PHP: Exception - Manual
PHP: エラーおよびエラー処理 - Manual
PHPでデータベースに接続するときのまとめ - Qiita
あらかじめ読んでおきたい記事 Qiita - 【PHP超入門】クラス~例外処理~PDOの基礎 by @7968 初心者がやりがちなミス 以下のどれかに1つでも当てはまるコードは見直す必要があります.付録にリンクを貼...
PDOを使ってデータベースに接続する方法を解説! - Qiita
はじめに データベースに接続する方法について本やネットの情報から調べて理解したことをまとめました。 もし、書いていることに何か間違いがある場合はご指摘いただけると嬉しいです。 接続するデータベースとテーブル 以下のよ...