広告

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

2019年9月29日

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
OYAKUN
任意のレコードを表示させることができた〜!

まとめ

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

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

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

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

OYAKUN
OYAKUN
次回はis_numericでURLパラメーターの入力値を指定する方法について書いていきます!
入力値を指定
php-url-parameters
PHPでURLパラメーターを指定して利便性をあげる方法

PHPでURLパラメーターに入力される値を指定する方法を記してます。  補足 $_REQUESTでMySQLか ...

続きを見る

関連記事:【MySQL】PHPでデータベースを表示したHTMLにリンクも埋め込む
関連記事:PHPでデータベースを取得して画面表示する方法
関連記事:【MySQL】PHPでprepareを使って安全にデータベースへ登録する方法