#はじめに#
バックエンドエンジニアを目指されている方にとっては、データベースは必須の知識になります。今回はデータベースの超基本的なお話とPHPで使われるPDOクラスというものについてまとめていきたいと思います。
#データベースとは#
データベースとはさまざまなデータを保存し、必要な時にすぐに使えるように整理したものです。例えば、ログイン認証や商品情報登録などで使われます。データベースを用いることで、膨大なデータを保存できる上、それらを並べ替えたりグループ化したり必要な形式に加工して取り出すこともできます。
データベースにも色々種類があるようですが、ここではRDB(リレーショナルデータベース)を取り上げていきます。RDBとは表形式のデータベースで、エクセルのように列と行から成り立っています。列には、どんなデータが保存されてるかを表す”カラム”と呼ばれるものが設定されており、それぞれの行に対応したデータが保存されています。これらの列と行のまとまりをテーブルと言います。データベースは通常、複数のテーブルから成り立っています。
##使用例##
例えば、ショッピングサイトを想像してみましょう。ショッピングサイトにはどのようなデータが必要でしょうか。
まず、商品のデータを保存しておく必要があるので、商品テーブルは必要でしょう。また、買い物をするには会員登録やログインが必要ですので、ユーザーテーブルも必要になると思われます。
その他にも、購入履歴を保存するテーブルやカートの情報を保存するテーブルなど、さまざまなデータが必要になります。
#RDBMS(Relational Database Management System)#
RDBMSとは、RDBを実際に操作する際に使われるシステムです。SQLと呼ばれる言語を使って操作します。
基本的な操作については、以前記事にしたこちらを参考にどうぞ。
SQLさえ覚えておけば、どんなRDBでも操作できます。
また、RDBMSにもいくつか種類があります。
・MySQL
・Oracle
・PostgreSQL
・MariaDB
などが挙げられます。
このようにRDBMSの種類は多岐にわたります。これらがそれぞれ異なる操作方法だとするとどうでしょうか。データベースを変える必要が出てきたときなんかだと結構めんどくさいですよね。
それを防ぐためにPHPには便利なクラスが用意されています。
#PDOクラスとは#
それがPDOクラスと呼ばれるものです。
PHP Data Object (PDO) とはPHPに拡張モジュールとして標準で提供されているデータベース抽象化レイヤであり、各種データベース(DBMS、RDBMS)への接続を抽象化する。
↑(Wikipediaより引用)
要は、どんなRDBMSでもいい感じに操作してくれるのがPDOだということです。実際にどのように使っていくのか、流れを見てみたいと思います。
PDOを使ってデータベースに接続する際はこのように書きます。
$host = 'localhost';
$charset = 'utf-8';
$dbname = 'データベース名';
$username = 'ユーザー名';
$password = 'パスワード';
$dsn ='mysql:dbname='.$dbname.';host='.$host.';charset='.$charset;
try{
$dbh = new PDO($dsn,$username,$password);
echo '接続成功';
}catch(PDOException $e){
echo '接続失敗' . $e->getMessage();
exit();
}
これでデータベースへの接続ができました。PDOクラスをインスタンス化することで接続ができます。クラスとインスタンスについて分からない方はこちらをご覧ください。
try〜catch構文はデータベース接続処理中に何か異常が発生した際に処理を中断することができます。これを「例外処理」と言います。大切なデータに何かあっては大変ですので、データベース接続をする際は必ず例外処理を行いましょう。接続ができたら次のように書きます。
$sql = 'SELECT * FROM table';
$stmt = $dbh->prepare($sql);
$stmt->execute();
$rows = $stmt->fetchAll();
これも例外処理の中に含めて書いてください。prepareでSQLを準備してexecuteで実行します。fetchAllで取り出した値を$rowsに代入している、という流れになります。こうすることでtableテーブルから全てのデータを取り出すことができます。
無事にデータベースからデータをとってくることができました。
他にもオプションの設定などができますが、また機会があればまとめていきます。
#まとめ#
今回は超基本的なデータベースのお話をしてきました。
・データベースとはアプリケーションに必要な様々なデータが保管されている。
・データベースからデータ操作をするのにPHPではPDOクラスというものが用意されている。
バックエンドでは必須の知識になりますのでしっかり覚えておきましょう!