前回は、メソッド名のみを指定し、継承先で実装を求める抽象クラスを解説した。
単純な継承との違いに気を付けておいてほしい。
以下がその記事だ。
【PHP講座12】抽象クラスとは?使い方を解説! | Shino’s Mind Archive
さて、今回からがらっと話が変わる。
しばらく、データベースとの連携について解説していこう。
今回は、まずデータベースとの接続を行う準備をざっと解説しよう。
また、実際にデータベースから情報を持ってくることもしてみる。
次回以降、そのデータベース側に話を移して、SQLを簡単に解説していく。
ここもWebアプリケーションを作る場合には必須級の内容なので、しっかり身に付けていこう。
データベース
まず、データベースとは何かから簡単に話をしていこう。
通常、アプリケーションでは多くのデータを管理しなければいけない。
その仕組みを一から考えていくと、さすがに骨が折れる。
そのため、よくデータベースとの連携が行われる。
このデータベースとは、簡単に言ってしまうとデータを管理するための仕組みだ。
色々な種類があるが、基本的にはデータを格納しておき、専用の命令で欲しい情報を抜き出すことによりそのデータを利用していく。
今回は、RDBMSという、表形式のデータを管理するシステムを使っていく。
この中にも色々とあるのだが、具体的にはMySQLというもので見ていこう。
このMySQLには、テーブルと呼ばれる表形式のデータを入れることができる。
各列に、どんな値を入れるかというカラム名と型を設定し、それに沿ったデータを実際に入れていくのだ。
例えば、商品で見ていこう。
ざっと、通し番号、商品名、値段、在庫数を管理したいとしよう。
そうすると、以下のようなテーブルを作ることになる。
通し番号(整数) | 商品名(文字列) | 値段(整数) | 在庫数(整数) |
---|---|---|---|
1 | 缶コーヒー | 120 | 20 |
2 | 炭酸ジュース | 130 | 20 |
… | … | … | … |
現段階では、そんなもんなんだな程度の認識で十分だ。
実際にデータを入れたり、使ったりするうちにイメージが湧いてくると思う。
MySQLの準備をしよう
では、早速PHPからデータベースにアクセス…といきたいのだが、その前に準備が必要だ。
大まかにやることは以下の通り。
- MySQLの起動
- ユーザーの確認(初回のみ)
- データベースの作成(初回のみ)
- アクセステスト用テーブルの作成
- アクセステスト用データの挿入
MySQLの起動
ということで、MySQLの起動から見ていこう。
本講座の内容で進めてもらっている場合、XAMPPを使用しているはずだ。
また、初回の内容通りにインストールを行った場合、すでにデータベースを使用する準備も整っているはず。
というわけで、起動はボタン一つだ。
XAMPPのコントロールパネルで、MySQLの行のStartボタンをポチっと押してみよう。
Apacheのところと同じように、MySQLの背景色が黄緑色になればOKだ。
これで起動ができた。
念のため、しっかり起動できているか確認もしてみよう。
「http://localhost/phpmyadmin」にアクセスしてみてほしい。
これで、以下のような画面が出てくれば成功だ。
なお、左側のメニューはもっと少ないはずだ。
この画面はphpMyAdminといって、MySQLをGUIで操作できる画面だ。
レンタルサーバを使用している場合でもこの画面を使うことがあるので、このタイミングで操作も確認しておくといいだろう。
ユーザーの確認
本来であれば、専用のユーザーを作成し、そのユーザーに割り振られた権限で作成やアクセス等をしていくことになる。
が、今回はあらかじめ用意されているrootユーザーを使用してしまおう。
このユーザーにはパスワードは設定されていない。
もし他のユーザーを使用する場合、変更箇所は随時解説するので、そこを変えるようにしよう。
データベースの作成
ちょっと言葉がややこしいが、まずはデータベースを作成する。
ここで言うデータベースは、上で解説したものとは異なることに注意しよう。
上では、単にデータをまとめる仕組み全般をデータベースと呼んでいた。
ここでのデータベースは、MySQLの中に作成するもの。
MySQLでは、まずこのデータベースというものを作成し、その中にテーブル等を作っていく。
ここも、一旦はそんなもんか程度の認識でいよう。
では、作っていく。
phpMyAdminのメイン画面の左上にある「データベース」をクリックする。
そうすると、現在あるデータベースの一覧画面が出てくる。
その一番上に、新しいデータベース作成用の欄があるはずだ。
そこに、今回「testdb」という名前でデータベースを作成しよう。
右の欄は、「utf8_general_ci」を選択してほしい。
この状態で、右の「作成」ボタンを押せばデータベースの作成完了だ。
左メニューに、新しく「testdb」ができているか確認しておいてほしい。
なお、本講座では基本的にこのtestdbというデータベースを使用することとしよう。
アクセステスト用テーブルの作成
ようやくテーブルの作成だ。
今回はとりあえずアクセスできているかの確認だけしたいので、簡単なテーブルを作る。
今、phpMyAdminの画面は、testdbの内容が表示されていると思う。
もし表示されていなかったら、左メニューから「testdb」をクリックしておこう。
そうしたら、「テーブルを作成」という領域の中に情報を入れていく。
名前に「access_test」、カラム数は2を入力して、「実行」を押そう。
すると、各カラムの情報を入力する画面に移行するはずだ。
色々と入力するところはあるが、一旦以下の内容を入力しよう。
以下にない場合は、そのまま空欄あるいはデフォルトで問題ない。
- カラム一つ目
- 名前:id
- データ型:INT
- インデックス:PRIMARY
- A_I:チェックあり
- コメント:通しID
- カラム二つ目
- 名前:name
- データ型:TEXT
- コメント:名前
- テーブルのコメント:アクセステスト用テーブル
- 照合順序:utf8_general_ci
なお、カラム一つ目のインデックスでPRIMARYを選択したときに何か出てくるが、そのまま実行を押してもらえれば大丈夫だ。
入力が完了したら、右下の「保存する」を押そう。
これで、以下のような画面が出てくれば成功だ。
アクセステスト用データの挿入
最後に、作ったテーブルへデータを入れていく。
上のメニューから「挿入」を選択しよう。
すると、以下のような画面が出てくる。
この、上半分だけを使う。
nameの行、値の列に大きい入力欄があるので、そこに適当な文字列を入れてみよう。
ここが実際に管理するデータになる。
今回はとりあえず入れて、後でPHPで取得できるか試すだけなので何でもいい。
入れ終わったら「実行」を押して、実際にデータを挿入しよう。
「1行挿入しました」と出ればOKだ。
これを何度か繰り返して、5個くらいデータを入れておこう。
入れ終わったら、最後に確認を。
左上の「表示」を押して、実際に入れた内容が出てくれば成功だ。
なお、idには自動で数字が入るような設定になっているので、何も入力しなくてもOKだ。
さあ、これでMySQL側の準備が整った。
PHPからMySQLにアクセスしよう
ようやくだが、PHPからMySQLにアクセスしてみよう。
ちょっと長くなってしまっているので、サンプルだけ出してしまう。
以下のサンプルをコピペして、そのままアクセスしてみよう。
<?php
$hostname = "localhost";
$dbname = "testdb";
$username = "root";
$password = "";
$dsn = "mysql:dbname=" . $dbname . ";host=" . $hostname . ";port=3306;charset=utf8";
try{
$db = new PDO($dsn, $username, $password);
$stmt = $db->prepare("SELECT * FROM access_test");
$stmt->execute();
$rows = $stmt->fetchAll();
foreach($rows as $row){
echo $row["id"] . " : " . $row["name"] . "<br>";
}
}catch(PDOException $e){
exit("データベースアクセス時にエラーが発生しました。");
}
?>
これを実行すると、例えば以下のような結果が表示されるはずだ。
1 : データ1
2 : データ2
3 : データ3
4 : データ4
5 : データ5
右側に、各自で入力してもらった内容が表示される。
もし表示されなければ、色々調べて解決してみよう。
ユーザーを別のものにしている場合、サンプルの4行目にそのユーザー名、5行目にそのパスワードを代入する形で変えて欲しい。
また、データベース名は3行目、そもそもレンタルサーバなどを利用している場合は2行目のホスト名も変更が必要になる。
必要に応じて、書き換えて欲しい。
なお、サンプルの中に、SELECTで始まる文字列があると思う。
それがSQLで、これを使って狙った情報をMySQLから取得することができるのだ。
これにも色々な書き方があるので、次回以降はこの詳細を見ていこう。
おわりに
今回は、データベースとの接続を行うための準備を行った。
今回の内容が上手くいけば、とりあえずは連携ができるようになった。
まだサンプルプログラムの解説を行っていないが、それはSQLの解説が終わってからにしよう。
次回は、上にも書いた通りSQLに進んでいく。
というわけで、PHP側は一旦休止だ。
SQLが終わったら戻ってくるので、忘れないようにしておいてほしい。
コメント