PHPの$_REQUESTを使って任意のデータを取得する方法を記してます。
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つ準備します。
- 入力フォームのHTMLファイル
- データベースへ接続・登録するPHPファイル
- 詳細画面を表示するPHPファイル
今回は「requestフォルダ」を作成し、その中に以下3つのファイルを作成しました。
- 入力フォーム:input.html
- データーベース登録:index.php
- 詳細画面:request.php
以下に各ファイルのソース内容を示します。
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に登録されたレコードが表示されました。
テーブルに登録がされている値が2つ以上あれば、
"
/request.php?id=1?id=2
"、"
/request.php?id=3
"と書き換えることで、テーブルに登録されているレコードが以下のように画面表示されます↓
まとめ
PHPの$_REQUESTでMySQLから任意のデータを取得する方法を紹介しました。
最大のポイントとしては、
- ファイルを3つ分けて
- $_REQUESTを使って任意のデータを取得する
ところでしょうか...多分!
-
PHPでURLパラメーターを指定して利便性をあげる方法
PHPでURLパラメーターに入力される値を指定する方法を記してます。 補足 $_REQUESTでMySQLか ...
続きを見る
関連記事:【MySQL】PHPでデータベースを表示したHTMLにリンクも埋め込む
関連記事:PHPでデータベースを取得して画面表示する方法
関連記事:【MySQL】PHPでprepareを使って安全にデータベースへ登録する方法