【PHP講座13】PHPからMySQLにアクセスしよう

PHP講座

前回は、メソッド名のみを指定し、継承先で実装を求める抽象クラスを解説した。

単純な継承との違いに気を付けておいてほしい。

以下がその記事だ。

【PHP講座12】抽象クラスとは?使い方を解説! | Shino’s Mind Archive

さて、今回からがらっと話が変わる。

しばらく、データベースとの連携について解説していこう。

今回は、まずデータベースとの接続を行う準備をざっと解説しよう。

また、実際にデータベースから情報を持ってくることもしてみる。

次回以降、そのデータベース側に話を移して、SQLを簡単に解説していく。

ここもWebアプリケーションを作る場合には必須級の内容なので、しっかり身に付けていこう。

スポンサーリンク

データベース

まず、データベースとは何かから簡単に話をしていこう。

通常、アプリケーションでは多くのデータを管理しなければいけない。

その仕組みを一から考えていくと、さすがに骨が折れる。

そのため、よくデータベースとの連携が行われる。

このデータベースとは、簡単に言ってしまうとデータを管理するための仕組みだ。

色々な種類があるが、基本的にはデータを格納しておき、専用の命令で欲しい情報を抜き出すことによりそのデータを利用していく。

今回は、RDBMSという、表形式のデータを管理するシステムを使っていく。

この中にも色々とあるのだが、具体的にはMySQLというもので見ていこう。

このMySQLには、テーブルと呼ばれる表形式のデータを入れることができる。

各列に、どんな値を入れるかというカラム名と型を設定し、それに沿ったデータを実際に入れていくのだ。

例えば、商品で見ていこう。

ざっと、通し番号、商品名、値段、在庫数を管理したいとしよう。

そうすると、以下のようなテーブルを作ることになる。

通し番号(整数)商品名(文字列)値段(整数)在庫数(整数)
1缶コーヒー12020
2炭酸ジュース13020
テーブル例

現段階では、そんなもんなんだな程度の認識で十分だ。

実際にデータを入れたり、使ったりするうちにイメージが湧いてくると思う。

MySQLの準備をしよう

では、早速PHPからデータベースにアクセス…といきたいのだが、その前に準備が必要だ。

大まかにやることは以下の通り。

  • MySQLの起動
  • ユーザーの確認(初回のみ)
  • データベースの作成(初回のみ)
  • アクセステスト用テーブルの作成
  • アクセステスト用データの挿入

MySQLの起動

ということで、MySQLの起動から見ていこう。

本講座の内容で進めてもらっている場合、XAMPPを使用しているはずだ。

また、初回の内容通りにインストールを行った場合、すでにデータベースを使用する準備も整っているはず。

というわけで、起動はボタン一つだ。

XAMPPのコントロールパネルで、MySQLの行のStartボタンをポチっと押してみよう。

XAMPPコントロールパネル

Apacheのところと同じように、MySQLの背景色が黄緑色になればOKだ。

これで起動ができた。

念のため、しっかり起動できているか確認もしてみよう。

http://localhost/phpmyadmin」にアクセスしてみてほしい。

これで、以下のような画面が出てくれば成功だ。

phpMyAdminトップ

なお、左側のメニューはもっと少ないはずだ。

この画面はphpMyAdminといって、MySQLをGUIで操作できる画面だ。

レンタルサーバを使用している場合でもこの画面を使うことがあるので、このタイミングで操作も確認しておくといいだろう。

ユーザーの確認

本来であれば、専用のユーザーを作成し、そのユーザーに割り振られた権限で作成やアクセス等をしていくことになる。

が、今回はあらかじめ用意されているrootユーザーを使用してしまおう。

このユーザーにはパスワードは設定されていない。

もし他のユーザーを使用する場合、変更箇所は随時解説するので、そこを変えるようにしよう。

データベースの作成

ちょっと言葉がややこしいが、まずはデータベースを作成する。

ここで言うデータベースは、上で解説したものとは異なることに注意しよう。

上では、単にデータをまとめる仕組み全般をデータベースと呼んでいた。

ここでのデータベースは、MySQLの中に作成するもの。

MySQLでは、まずこのデータベースというものを作成し、その中にテーブル等を作っていく

ここも、一旦はそんなもんか程度の認識でいよう。

では、作っていく。

phpMyAdminのメイン画面の左上にある「データベース」をクリックする。

データベース作成手順1

そうすると、現在あるデータベースの一覧画面が出てくる。

その一番上に、新しいデータベース作成用の欄があるはずだ。

そこに、今回「testdb」という名前でデータベースを作成しよう。

右の欄は、「utf8_general_ci」を選択してほしい。

データベース作成手順2

この状態で、右の「作成」ボタンを押せばデータベースの作成完了だ。

左メニューに、新しく「testdb」ができているか確認しておいてほしい。

なお、本講座では基本的にこのtestdbというデータベースを使用することとしよう。

アクセステスト用テーブルの作成

ようやくテーブルの作成だ。

今回はとりあえずアクセスできているかの確認だけしたいので、簡単なテーブルを作る。

今、phpMyAdminの画面は、testdbの内容が表示されていると思う。

もし表示されていなかったら、左メニューから「testdb」をクリックしておこう。

そうしたら、「テーブルを作成」という領域の中に情報を入れていく。

名前に「access_test」、カラム数は2を入力して、「実行」を押そう。

テーブル作成手順1

すると、各カラムの情報を入力する画面に移行するはずだ。

テーブル作成手順2

色々と入力するところはあるが、一旦以下の内容を入力しよう。

以下にない場合は、そのまま空欄あるいはデフォルトで問題ない。

  • カラム一つ目
    • 名前:id
    • データ型:INT
    • インデックス:PRIMARY
    • A_I:チェックあり
    • コメント:通しID
  • カラム二つ目
    • 名前:name
    • データ型:TEXT
    • コメント:名前
  • テーブルのコメント:アクセステスト用テーブル
  • 照合順序:utf8_general_ci

なお、カラム一つ目のインデックスでPRIMARYを選択したときに何か出てくるが、そのまま実行を押してもらえれば大丈夫だ。

テーブル作成手順3

入力が完了したら、右下の「保存する」を押そう。

これで、以下のような画面が出てくれば成功だ。

テーブル作成手順4

アクセステスト用データの挿入

最後に、作ったテーブルへデータを入れていく。

上のメニューから「挿入」を選択しよう。

すると、以下のような画面が出てくる。

データ挿入手順1

この、上半分だけを使う。

nameの行値の列に大きい入力欄があるので、そこに適当な文字列を入れてみよう。

ここが実際に管理するデータになる。

今回はとりあえず入れて、後でPHPで取得できるか試すだけなので何でもいい。

入れ終わったら「実行」を押して、実際にデータを挿入しよう。

「1行挿入しました」と出ればOKだ。

これを何度か繰り返して、5個くらいデータを入れておこう。

入れ終わったら、最後に確認を。

左上の「表示」を押して、実際に入れた内容が出てくれば成功だ。

データ挿入手順2

なお、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が終わったら戻ってくるので、忘れないようにしておいてほしい。

コメント

タイトルとURLをコピーしました