LoginSignup
0
2

More than 3 years have passed since last update.

【PHP初心者向け】MySQLからSQL文で絞り込み、結果をサイトに表示する

Last updated at Posted at 2020-09-30

0.概要

デザイナーをやっていると、静的なサイトは作れるものの、
動的なサイトを作る時にはエンジニアに頼むことが多く、
自身で完結できないことが歯痒い時があります(実体験)。

そこで今回は、
データベース(今回はMySQL)に保存したデータを、
条件によって動的に出し分け(PHPで、SQLのクエリを書く)、
サイトに表示する方法を記載いたします。

1.はじめに(データベースの準備)

まず最初に、データベース自体にデータを入れます。
借りてるレンタルサーバーのコントロールパネルから、
phpMyAdminにログインするか、
データベースをデータベース管理ツールと連携させましょう。

オススメの無料データベース管理ツールは下記の2つです。

名前 特徴 入手先URL
DBeaver クラシカルなUIだが多機能。ER図というDBの繋がりを表示してくれる機能がある。※今回はこれを実例に進めて参ります。 https://dbeaver.io/
Metabase ビジュアライズが充実している。クエリを知らなくともGUI上で色々できるのでデザイナーにも扱いやすい。 https://www.metabase.com/start/oss/jar

※導入に関しては他の方が書かれた下記の記事を参考にして下さい。

・ データベースツール DBeaver のインストール(Windows 上)
https://www.kkaneko.jp/tools/win/dbeaver.html
・MetabaseをWindowsにインストールする
https://qiita.com/n-i-e/items/b721687903055659ee2d

上記いずれかのデータベースにて入れたら、
まずはDB上にテーブル・カラム(項目名)を設定するために、
UI上にてテーブルの設定、カラムの設定、レコードの追加を行って下さい。

ここではDBeaverの画面を参考に進めて参ります。

・テーブルの追加
ツリーでDBをクリックし、ウインドウで開いたら[テーブル]を右クリックし、
[新しく作る 表]をクリックすると設定画面に入り、作成されます。
image.png
・カラムの追加
先程作成されたテーブルを開き、[列]にて、右クリックし、
[新しく作る カラム]をクリックすると設定画面に入り、作成されます。
image.png
・レコードの追加
最後に、今設定されたテーブル・カラムにレコードを追加するため、
SQL文のエディタを開きます。
DBeaverであれば、メニューの[SQLエディタ]から開けます。
image.png

開けたらDB上に新規レコードを追加するクエリを記述しましょう。

INSERT INTO [DB].[テーブル名]
([カラム名1], [カラム名2])
VALUES('[カラム名1の値]', '[カラム名2の値]');

※[]は削除し、中身をご自身のDBに合わせた文字に変えて下さい。

終了したらテーブルの[データ]にてちゃんと追加されているか確認しましょう。
私の場合は2つのレコードを下記のように入れ、問題ないことを確認しました。
2020-09-25_023529.png

2.PHP側でのMySQLとの連携

データベースの準備が出来たら、
PHPの読み込むファイル(例えばindex.phpなど)に、
MySQLへ接続するための、情報を記載いたします。

<?php 

// MySQLの接続情報をセット
$db = 'mysql:host=[データベースのホスト名];dbname=[データベース名]';
$user = '[ユーザー名]';
$pass = '[パスワード]';

//接続のテスト
try {
    $pdo = new PDO($db, $user, $password);
    echo "接続に成功しました";
} catch (PDOException $e) {
    echo "接続に失敗しました";
    exit();
}

  //次のステップの時にここにSQLを書く

?>

こちらを読み込んでみて「接続に成功しました」と出れば成功です。
接続に失敗しましたと表示された場合は、接続設定を見直してみて下さい。

豆知識・・・PDOはPHP Data Objectが正式名称です。

3.実際にクエリを書いて反映してみる

先程のphpファイルの、

//次のステップの時にここにSQLを書く

を書き換えます。

が、SQLを書く際はprepare文とexecute文で前処理をする必要があり、
その記述も合わせて書きましょう。

// SQLを書く(''の中は任意のクエリを記述)
$sql = 'SELECT [表示項目] FROM [データベース名].[テーブル名] WHERE [条件]';

// prepare文で上記のSQLを定義し、execute文で定義したSQLを実行
$prepare = $pdo->prepare($sql);
$prepare->execute();

// 結果を出力
foreach($prepare->fetchAll() as $result){
  // echo $result['カラム名'];にて出力できる
  }

私の場合、クエリにてshop_idがtest1のものに絞り、
2つのカラム(shop_nameとshop_id)をh2要素として表示させたため、
image.png
と表示されました。

4.最後に

今回はクエリをこちら側で書きましたが、
サイト閲覧者に入力してもらうことによって、
ユーザー毎にリクエストした結果を表示することも可能です。

今後、その方法も記事にして行きます。

0
2
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
2