初めてのPHP ③。データベースを使ってみよう

- PHPでMySQLを使ってみたい
- 簡単にMySQLを使うソフトが知りたい
- PHPの勉強がしたい
様々なアプリではログイン情報やユーザーの個人情報などをサーバーのデーアベースで管理しています。必要なときに保存したり、編集したり、削除できるとアプリでできることが一気に広がります。
この記事を読むことでデータベースの使い方が分かります。
初めてのPHP ③。データベースを使ってみよう
データベースを使うにはMySQLがよく使われます。まずは、MySQLがダウンロードされているかの確認から行なっていきます。
MySQLのインストール
以前の記事で書いたHomebrewをインストールしていたらTerminalで下記のコマンドが使えます。
brew search mysql
これでMySQLをインストールしているかどうかが分かります。
インストールしてない場合は下記のコマンドでインストールしましょう。
brew install mysql
インストールできたらMySQLを立ち上げていきましょう。
mysql.server start
SUCCESSというメッセージが表示されたらMySQLにログインしていきます。
うまくログインできない場合は下記の記事を参考にしてください。
mysql -u root
-pをつけてパスワードを入力しても大丈夫です。
もし、エラーが出てusing passwordというメッセージが出たら-pを使うようにしましょう。
MySQLにログインすると最初にmysql>がつくようになります。
では、データベースを確認していきます。
mysql> show databases;
これで今あるデータベースの一覧が確認できます。
データベースの作成
今回使うためのデータベースを作っていきましょう。
mysql> create database PHP_study;
もう一度show databasesを唱えるとPHP_studyが増えているのがわかるかと思います。
MySQLの操作
このままTerminalからMySQLを操作しても良いのですが、TablePlusというソフトを使ったほうが簡単に操作できます。

ダウンロードは簡単に出来ます。。
MySQLとの接続
TablePlusを開くと下記のような画面になります。

赤枠のところから新しいデータベースを繋げることができます。
データベースの種類を聞かれるのでMySQLを選択し必要な情報を入力していきます。

パスワードとデータベース名以外は固定です。
記入したらTestをクリックし、上記の様に緑色になったら成功です。Connectを押してデータベースと繋げましょう。
テーブルの作成
では、テーブルを作っていきます。ユーザー情報やコメントなど情報ごとにテーブルを作っていくとデータを処理し易くなります。

赤ワクの+からテーブルを追加し、名前やカラムの構成を整えていきます。今回は id と comment のみのテーブルを作りました。どのテーブルでもid があると便利なので作る様にしましょう。
また、データ型については下記のものを押さえておくと困ることは少ないと思います。
- INTEGER;整数
- VARCHAR;文字
- DATE;日付
- BOOLEAN;真偽
データの挿入
では、データを入れてあげましょう。
データを入れたい枠をダブルクリックすると入力できます。

タブをStructureからDataに変更してcommentを入力しました。
これをPHPで抽出していきます。
データの抽出
<?php
require 'functions.php';
try{
$pdo = new PDO('mysql:host=127.0.0.1;dbname=PHP_study', 'root', '1234');
}catch(PDOException $e){
die('接続できません');
}
$state = $pdo->prepare('select * from Comment');
$state->execute();
$Comments = $state->fetchAll(PDO::FETCH_OBJ);
dd($Comments);
require 'view.php';
?>
new PDOでデータを引き出しています。
- データベースの種類;mysql
- hostの名前;host=127.0.0.1
- データベース名;自分で設定したもの(今回はroot)
- ユーザー名;host
- パスワード名;自分で設定したもの(今回は1234)
これがうまくいかない場合もあるので try を使っています。うまくいかなかった場合は「接続できません」というメッセージが出る様にしています。
しかし、これではデータベースにアクセスしただけです。
そこで、prepareを使ってCommentテーブルから全てのデータを抽出する様にしています。
さらに、executeでこれを実行し、オブジェクトとして全てのデータを$Commentに入れています。
ブラウザで確認してみましょう。
ddはfunctions.phpで定義している関数です。データを見やすい形でvar_dumpしています。

うまく抽出できてますね。
例えば、ddの中を下記の様に変えると「コメント1」だけが取れてきます。
dd($Comments[0]->comment);
抽出したデータをHTMLに組みこもう
では、foreachを使ってデータをHTMLに組み込んでいきましょう。
ddを消すのを忘れない様にします。
<body>
<ul>
<?php foreach($Comments as $Comment): ?>
<li><?= $Comment->comment; ?></li>
<?php endforeach; ?>
</ul>
</body>
こんな感じで良いかと思います。

予想通りになってますね。
まとめ
今回はデータベースの使い方について紹介しました。
ログインしたユーザーの情報を溜め込んでおく場合などWebアプリには欠かせない機能です。絶対に使えるようになってください。