MySQL

PHPの$_REQUESTでMySQLから任意のデータを取得する方法

PHPの$_REQUESTを使って任意のデータを取得する方法を記してます。

idを書き換えて表示される画面

 補足
PHPで取得データを表示&詳細画面へ遷移する方法を読んでおくと、この記事の理解が捗ります!

PHPの$_REQUESTの意味や詳細

idの部分が固定になっているので「URLパラメーター」を使って変数を設定します。

 URLパラメーター
URLの末尾にクエッションマーク(?)を付加することで、「変数(パラメーター)」の形としてデータをURLに含めることができます。

 

すぐにサンプルコードを見る↓

 

URLパラメーターを受け取る方法として、「$_REQUEST」を使って処理していきます。

 $_REQUEST変数
$_REQUESTはスーパーグローバル変数の1つで、$_GET、$_POST、$_COOKIEといった内容がまとまった変数。(初期値:COOKIE > POST > GET)

 

$_REQUESTはスーパーグローバル変数なので、GETでもPOSTでも値を受け取ることができる。

 スーパーグローバル変数
スーパーグローバル変数とは、PHPの全スコープで使用できる変数のこと。

 

ちなみにPHPのスコープは「スーパーグローバル変数」以外に、

  • ローカル変数
  • グローバル変数

があります。

 

PHPの$_REQUESTでMySQLから任意のデータを取得する手順

$_REQUESTでMySQLから任意のデータを取得するには、HTML・PHPファイルを全部で3つ準備します。

  1. 入力フォームのHTMLファイル
  2. データベースへ接続・登録するPHPファイル
  3. 詳細画面を表示するPHPファイル

今回は「requestフォルダ」を作成し、その中に以下3つのファイルを作成しました。

  1. 入力フォーム:input.html
  2. データーベース登録:index.php
  3. 詳細画面:request.php

requestフォルダに3つのファイルを格納した様子

以下に各ファイルのソース内容を示します。

 

PHP・$_REQUESTでMySQLのデータを取得するサンプル

入力フォームのファイル(input.html)のソース↓

<main>
<h2>部品名を入力してください。</h2>

<form action="index.php" method="post">
  <textarea name="buhin" cols="40" rows="3" placeholder="登録する部品名を入力"></textarea><br>
  <button type="submit" name="button">登録する</button>
</form>

</main>

データベースへ登録するファイル(index.php)のソース↓

<main>
<h2>登録した部品名一覧</h2>
<?php
// データーベースtestへ接続
try {
  $db = new PDO('mysql:dbname=test;host=localhost;charset=utf8','root','root');
  // 入力した値をデータベースへ登録
  //$count = $db->exec('INSERT INTO 部品登録 SET 部品名="'. $_POST['buhin'] .'",登録日 = NOW()');
  // 登録した件数を表示
  //echo $count . "件のデータを登録しました!";
} catch (PDOException $e) {
  // 接続できなかったらエラー表示
  echo 'DB接続エラー!: ' . $e->getMessage();
}
// 部品登録テーブルの部品名の値を降順に取得して$entryに格納
$entry = $db->query('SELECT * FROM 部品登録 ORDER BY 部品名 DESC');
?>
<article>
  <?php while($resister = $entry->fetch()): ?><!-- $entryの値をfetchで1件ずつ取得して$resistorへ格納 -->
    <a href="request.php"><?php print(mb_substr($resister['部品名'],0,50)); ?></a>
    <time><?php print($resister['登録日']); ?></time>
    <hr size='3' color="#a9a9a9" width="450" align="left">
  <?php endwhile; ?>
</article>
</main>

詳細画面を表示するファイル(request.php)のソース↓

<main>
<h2>登録した部品名の詳細画面</h2>
<?php
// データーベースtestへ接続
try {
  $db = new PDO('mysql:dbname=test;host=localhost;charset=utf8','root','root');
  // 入力した値をデータベースへ登録
  $count = $db->exec('INSERT INTO 部品登録 SET 部品名="'. $_POST['buhin'] .'",登録日 = NOW()');
  // 登録した件数を表示
} catch (PDOException $e) {
  // 接続できなかったらエラー表示
  echo 'DB接続エラー!: ' . $e->getMessage();
}

  //安全に処理するためにprepareとREQUEST変数で処理する
$Data = $db->prepare('SELECT * FROM 部品登録 WHERE id=?');
$Data->execute(array($_REQUEST['id']));
$hyouji = $Data->fetch();
?>
<article>
  <pre><?php print($hyouji['部品名']);?></pre>
  <a href="index.php">一覧画面へ戻る</a>
</article>

</main>

 

$_REQUESTの動作確認

入力フォームに適当に値を入れて登録します

入力フォームに値を入力して登録した図

index.htmlファイルが表示されるので、テキストリンクをクリック

画面表示されたテキストリンクをクリック

詳細画面が表示されるのでパスに"?id=1"を入力すると、

http://localhost:8888/request/request.php?id=1

対象のテーブルid=1に登録されたレコードが表示されました。

?id=1にて表示された画面

 

テーブルに登録がされている値が2つ以上あれば、

テーブルに登録されているデータ3つ

"/request.php?id=1?id=2"、"/request.php?id=3"と書き換えることで、テーブルに登録されているレコードが以下のように画面表示されます↓

idを書き換えて表示される画面

oyakun
任意のレコードを表示させることができた〜!

 

まとめ

PHPの$_REQUESTでMySQLから任意のデータを取得する方法を紹介しました。

 

最大のポイントとしては、

  • ファイルを3つ分けて
  • $_REQUESTを使って任意のデータを取得する

ところでしょうか...多分!

 

oyakun
次回はis_numericでURLパラメーターの入力値を指定する方法について書いていきます!

>【MySQL】PHPでデータベースを表示したHTMLにリンクも埋め込む

>PHPでデータベースを取得して画面表示する方法

>【MySQL】PHPでprepareを使って安全にデータベースへ登録する方法



  • この記事を書いた人
  • 最新記事
oyakun

oyakun

30代半ば♂妻・子3人の5人で日々激戦中。Google app script&VBA初心者が自分の備忘録を兼ねて「スプレッドシート、Excel、WordPress、plugin」の設定等、主にブログやアフィリエイト周辺のtipsを背伸びしながらご紹介しています。

Copyright© OYAKUDACHI.XYZ , 2019 All Rights Reserved.