【php】MySQLで取得したデータを表示する方法

pdophp
書いてる人
あいりゅー

プログラミングを学びながら更新しています。
iPhone/iPad/Mac/Apple WatchなどのApple製品はこちらで主に更新しています。
麻雀の反省をひたすら掲載してるブログもやってます。

あいりゅーをフォローする

このページについて

このページではMySQLで取得したデータをPHPでどうやって扱うかというのをメインに解説しています。

PHPでデータベースへ接続

PHPでサーバーのデータベースに接続するにはPDOクラスを使います。PDOクラスの詳しい解説自体はこちらで行っています。とはいえまずは基本的な使いから。

$dbname = 'mysql:host=localhost;dbname=データベース名';
$user = 'ログインユーザー名';
$pass = 'ログイン用パスワード';
$db = new PDO($dbname,$user,$pass);

正しく設定すると、指定したデータベース名に接続できます。しかしこの時点では何もデータを取得できたわけではありません。

取得したデータを使う

取得したデータはインスタンスの中に入っています。今回の例では$dbはPDOのインスタンスなので、接続に成功したら$dbの中に指定したデータベースの情報が入っています。

まずは指定したテーブルの情報を取得する記述を書きます。この書き方はMySQLのSELECT文とほぼ同じですが、変数の扱いなどがあるのでその辺りを詳しく書きます。

サーバーに接続し、MySQLなどのデータベースにも接続できた前提で書きます。ちなみに下のサンプルで使っている変数名はそれぞれ適当につけました。変数を使っている場所との相互関係さえしっかり把握できれば、名前はなんでもOKです。

$test='select * from 使うテーブル名';
$data1 = $db->query($test);
foreach($data1 as $data2){
echo data2['カラム名'];
}

一行ずつ見ていきます。まずは最初の$testから。ここでMySQLのSELECT文にあたるリクエストを書いています。内容はオーソドックスに「指定したテーブル名の全てのカラムを取得」です。ここについては後でパターンをいくつか紹介します。

二行目の$data1のところ。これはPDOのインスタンスである$dbに対してqueryで一行目のSELECT文を実行し、その結果を$data1に格納という処理を行なっています。queryは「SQLステートメントを準備し、実行。その結果を受け取り、オブジェクトとして返す」という機能を持っています。

三行目のforeachで取得した$data1の中身を取り出して$data2に入れていき、四行目のechoで画面に出力という処理を行なっています。

トータルで上から順に簡潔に書くと「使うテーブル名を指定してSELECT文で欲しいデータを指定。その後queryで実行し、結果を受け取ってforeachで処理」となります。

使い方のカスタマイズ

ここからはちょっとカスタマイズして使う際の方法なんかを紹介。なお取得項目を選ぶ方法についてはMySQLのSELECT文の解説ページにて書いているので、こちらでは一部を掲載にとどめておきます。

特定のカラムのみ取得する

最初の例ではselect * fromと書きましたがこれは「全てのカラムを取得」という書き方になります。とはいえ常に全てのカラムが必要という状況もそう多くはないと思うので、特定のカラムのみ取得したい場合の方法。

$a = 'select カラム1,カラム2,カラム3 from テーブル名';

と書きます。カラム1のみの場合は1つだけでも良いんですが、取得していないカラムはそもそも表示すら出来ないので取得カラムは確認しておきましょう。

条件に一致するものだけ取得

次はwhereを使った、条件判定を使った取得方法です。これを使うと指定した条件に合うレコードだけを取得できます。

$a='select * from テーブル名 where カラム1="条件"';

ここで注意して欲しいんですが、条件は”か’で囲む必要があります。しかしselect文自体も囲む必要があるので、どちらか使っていない方で囲みましょう。select全体を’で囲むんであればwhereの条件は”でって感じです。

この取得はまずカラム1が条件に一致するかどうかを調べて、一致するものだけを取得します。条件には日本語も使用可能です。例えばポケモンのタイプで「みず」を含むポケモンだけ取得する場合は以下。

$a='select * from pokemon where type1="みず"';

実際にはタイプ1とタイプ2がありますが、サンプルということでタイプ1のみを書きました。次は複数のカラムに対して同様の条件判定を行う方法。

複数のカラムに対して条件判定をする

上のwhereの使い方解説は1つのカラムのみに対してでしたが、次は複数のカラムに対しての判定方法の書き方です。まずは複数ある修飾子の使い分けから覚えましょう。

or条件1または条件2のどちらかをクリアしたものを取得。
not条件1も条件2も満たさないものを取得
and条件1と条件2のどちらも満たすものを取得

このような使い分けをします。実際のサンプルは以下の通りです。

$a='select * from テーブル名 where カラム1="条件1" or カラム2="条件2"';
$a='select * from テーブル名 where カラム1="条件1" and カラム2="条件2"';
$a='select * from テーブル名 where カラム1="条件1" not カラム2="条件2"';

このように書くことで、条件をもとにカラムの中身を判定し、取得できるかどうか調べてくれます。

取得してソートする

取得したデータに対してソートを行う場合、order byを使うことで実行できます。この句もMySQLと同じ使い方でOKです。

$a='select * from テーブル名 order by ソートカラム';

前半はこれまでと同じですが、order byの後のソートカラムは一体なんでしょうか。これは「ソートするために使うカラム」のことを指しています。例えばポケモンの図鑑No.だったり、スキルのダメージ倍率だったり。それぞれソート対象にするカラムを指定することで、並び替えた後のデータを取得できます。

降順(大きい数字から小さい数字)にしたい場合、ソートカラムの後にdescを付与します。

$a = 'select * from テーブル名 order by ソートカラム desc';

取得したデータの表示方法

ここまではデータの取得のみでしたが、実際にWebサイト上に表示するにはどうすれば良いかを簡単に解説していきます。

まずサイト上で綺麗に表示するためにHTMLタグやらCSSやらは使うんですがそれらの細かい解説は省略します。

実際に取得したデータをテーブルタグを使って表示する方法は以下。

$a  ='select * from テーブル名';
$b = $db->query($a);
foreach ($b as $c){
echo '<tr><td>'.$c['カラム1'].'</td><td>'.$c['カラム2'].'</td></tr>';
}

今回取得したテーブルは以下。サンプルとして登録したので図鑑No.とか異なったりそもそも数が少ないのもあるけどサンプルなので大目に見てください。

サンプルテーブル

そして上のテーブル表示のコードをこれに適した内容に書き換えて実行したのが以下。

テーブルの取得結果とtable表示

取得した内容にソートなどは行なっていないのでテーブルの内容そのままです。なのでtableタグで表示している順番もみたまんまですね。

foreach内のテーブルタグは中身しか書いていないので、前後のtableと/tableは別で良い感じのところに書いておきましょう。

今回は表示していませんが、type1とtype2のカラムも表示する場合はforeach内のechoを修正しましょう。

まとめ

PHPとMySQLの便利な連携と、その使い方について解説しました。使い方次第ではMySQL内の膨大なテーブルも意図した方法で表示することも可能です。色々と試してみましょう。

phpの基礎
phpとは?JavaScriptとの違いは?みたいなことから、基本の書き方などを解説。
echoとprint
画面に文字を出力する2種類の言語構造の使い方
変数
phpで使える変数の扱い方などを解説しています。
変数のスコープ(有効範囲)
変数のスコープについての解説です。
var_dump
変数の情報を見ることができる関数
print_r
変数の情報をわかりやすい形式で表示する関数
配列と連想配列
配列と連想配列の書き方と、便利な関数の解説など。
key
連想配列のキーを返してくれます。内部ポインタ関係あり。
count
配列や連想配列の要素数を数えてくれる関数の使い方解説。
ソート関数
配列に対してソートを行う関数の中から、代表的な5つの使い方解説です。
array_reverse
配列の中身の順番を反転させる関数です。
array_chunk
配列を指定した数で分割させるarray_chunk関数の使い方解説です。
array_combine
2つの配列を足して1つの連想配列にする関数です。
array_diff
2つの配列を比較して、存在しない値を出力する関数
array_push
配列に対して後方に要素を追加する関数
array_unshift
配列に対して先頭に要素を追加する関数。
array_shift
配列の先頭の要素を取り出す関数。
array_merge
複数の配列を統合して1次元の配列にする関数
array_intersect
2つの配列を比較して、両方に共通するものを出力する関数
include
includeを使って別のphpファイルを読み込む方法の解説。
if文
if文を使って処理を変更させる方法の解説。
switch文
switch文を使って複数の処理分岐を行わせたい時に使います。
forループ
forループを使って同じ処理を行わせる方法の解説です。
whileループ
whileループを使って同じ処理を行わせる方法の解説と注意点。
do-whileループ
do-whileループを使って同じ処理を行わせる方法の解説です。
foreachループ
foreachループを使って配列内のアイテム全てに処理を行う方法の解説です。
continue
ループ処理の残りをスキップしつつ、ループの先頭に戻る制御構造
ループのネスト構造(入れ子)
ループの中にループを入れる書き方や考え方の解説。
function
functionを使って自作の関数を作成・使用する方法の解説。
引数の種類と書き方解説
functionで扱う引数の種類と書き方を解説
return
returnの使い方と関数での使い方解説。
class
classを作成して変数と関数を1つにまとめる方法と使い方の解説。
constructとdestruct
classのインスタンス作成と同時に処理を行うconstructと、スクリプトの終了と同時に実行するdestructの解説です。
インターフェイス
インターフェイスという用語の解説と、実際の使い方解説
トレイト
コードを再利用するのに便利なトレイトの解説です。
列挙型
プログラム中で使う変数名をあらかじめ定義しておく。そんな感じの型。
PDOを使ってMySQLへ接続
PDOを使ってMySQLへ接続し、データを取得する方法の解説です。
データの加工と表示
PDOでデータベースから取得したデータを加工して表示する方法の解説です。
HTMLフォームのデータ受け取りと表示
HTMLで作ったフォームからのデータの受け取り方法と、その表示方法の解説です。
タイトルとURLをコピーしました