こんにちは、
掃除にはまっているサトウです。
さて、本題に入りたいと思います。
phpの学習を進めると、「データベースへの接続」について学び始めている方も多いのではないでしょうか。データベースへの接続方法はやや複雑なため理解できない方も少なくないのでは、、、。と思い、今回はデータベースの接続方法について分かりやすく説明していきます。
データベースの中でも利用頻度の高い「MySQL」への接続について解説していくので、phpを学び始めた方や「phpからMySQLへの接続方法」について分からない方は、是非読んでみてくださいね。
目次 [非表示]

MySQLとは?
MySQLの概要
MySQLとはオープンソース(中身のソースコードが公開されているソース)のデータベースの1つで、世界的に広く使用されています。(他にもMySQL以外だとPostgreSQLやMongoDBといったデータベースもよく使用されています。)
MySQLは特に以下の点が優れています。
・ほとんどのレンタルサーバーで使用することが出来き、データを安全に、かつ高速に検索し、変更の一貫性を保つことが出来る点。
・複数人が同時に利用可能(マルチユーザー対応)な点。
MySQLへの接続方法(PDOでの接続)
MySQLへの接続にはいくつか方法がありますが、今回はPDO(PHP Data Objects)を使っての接続方法を解説していきます。PDOでの接続方法は将来的にMySQL以外のデータベースに変更・移植する可能性があっても同じ関数を使うことができるので、現場での使用頻度が高い書き方になります。
MySQLに接続する時は、以下のように記述します。
データソース名(Data Source Name)の略で、データベースに接続するために必要な情報が含まれています。
サーバー名:localhostやIPアドレスなどを指定します。
データベース名:データベース名を指定します。
文字エンコード:文字エンコードを指定します。utf8と指定する場合が多いです。
$user
ルート権限のデフォルト値は、rootになっています。必要に応じて変更するようにしましょう。
$password
データベース利用にあたっての管理者パスワードです。
$options = array();
接続時のオプションを連想配列で渡しています。エラーが起こった際の処理内容やクエリ実行時のデータの取得方法等を指定しています。
この箇所はやや複雑なので、学習初期段階では「こういう指定方法があるんだな」という程度の理解で十分です。
$dbh
これまで変数に入れたものを使って新しいオブジェクトを生成しています。new演算子というものを使い「new PDO()」 といった書き方をします。変数名は何でも良いのですが$dbh(DataBase Holder)といったものがよく使用されます。
ここまでがPDOでのDB接続の基本的な記述方法となります。
DB接続の処理の後にSQL文(データを登録する・検索する等指示)を書いて、処理を実行していきます。
見慣れないものが多いと思いますが、是非何度か書いて接続の確認テストをしてみてください。
MySQLへの接続(実践編)
ここからは実際にMySQLに接続して簡易な機能を作成しながら内容の解説していきます。
題材として以下を用意しました。MySQLへの接続のイメージを掴んでみてください。
「名前」欄を入力する
入力した名前が「送信した名前」に表示される
入力した名前が「データベース」の「usersテーブル」に登録される
完成イメージ
全体のコードがこちらになります。
サンプルコード(完成後)
大まかな処理の流れは以下のとおりです。
処理の流れ
(4)変数に入れた文字列をそのまま表示
それぞれ内容を解説していきます。
formタグからpost送信する
postされていれば以下の処理を実行
post送信されているかどうかを!emptyで判定しています。
postした情報を変数に入れる
ユーザー名と分かるようにuse_nameという変数を用意してそこにデータを入れています。
変数に入れた文字列をそのまま表示
今回は入力チェック等せずに、入力した文字列をそのまま表示しています。
DBに接続
2章で解説したPDOでの書き方で記述しています。ユーザー名・パスワードはご自身のMAMPの情報で書き換えて書いてみてください。
SQL文の作成:usersテーブルの「user_name」「create_date」カラムに値を挿入
今回の例ではmysql_testというデータベースにusersというテーブルを用意しました。
usersテーブルのカラム(列)にuser_name(入力した名前)とcreate_date(データ登録日)を登録する命令文を書いています。
SQLの命令文を実行する
命令したSQL文を実行しています。ここではプレースホルダを使って、変数に入れた情報をそのまま登録しないようにしています。(入力した不正値がそのままデータベースに登録されるのを防ぐためプレースホルダを利用します。)

まとめ
いかがでしたか?今回はphpで「MySQL」への接続方法を中心に解説しました。
プログラミングを学び始めた頃は、「PDOオブジェクトでの接続方法」等、難しく感じる部分も多いと思いますが、量をこなしていくと簡単に使えることができる日が来ると思うので、焦らずにゆっくりと理解を深めていってくださいね。
この記事が、phpの学習に役立つと嬉しいです。