PHP フォームからMySQLへ接続してselectするサンプル

PHPのフォームからMySQL(MariaDB)へ接続して検索するサンプルです。
select文を使用します。

確認環境
・PHP 7.1.8
・XAMPP 7.1.8
・Windows 10

取得イメージ

取得イメージは、以下のとおりです。
1.テキストボックスに数字のキーを入力して送信ボタンを押します。

2.入力値を元にMySQLのテーブルのデータを検索し該当のデータを表示します。

環境

XAMPP

XAMPPのMySQLを使用します。
XAMPPのインストール方法はこちらを御覧ください。
ローカルにPHPが動く環境を作る手順(XAMPP)

データベースとテーブルの作成

1.XAMMPのMySQLにデータベース、テーブルを作成しておく必要があります。
作成方法はこちらを御覧ください。
XAMPPのphpMyAdminでDB作成からデータ取得までのサンプル

2.以下のテーブルのデータを取得します。テーブル名は「fish」です。

PHPのファイル

以下2つのファイルがあります。
 1.index2.php・・・画面でテキストを入力しsubmitを行って値を送信する。
 2.testform.php・・・index2.phpから値を受け取ってMySQLを検索し画面に表示する。

値を送信する側のファイル

値を送信する側のファイルです。(index2.php)
9行目は、methodでpost方式を指定し、actionで送信先(testform.php)を指定します。
このサンプルでは、testform.phpとindex2.phpは同じフォルダに配置しています。
10行目は、テキストボックスです。画面から文字を入力します。
11行目は、送信ボタンです。ボタンを押すとsubmitが行われます。

<!DOCTYPE html>
<html lang="ja">
<head>
<meta charset="utf-8">
<title>submit</title>
</head>
<body >

<form method="post" action="testform.php">
<input type="text" name="id">
<input type="submit" value="送信ボタン">
</form>

</body>
</html>

値を受け取る側のファイル

値を受け取る側のファイルです。(testform.php)
index2.phpから値を受け取ってMySQLを検索し画面に表示します。
23,26,28行目は、SQLインジェクションを防止するためプリペアドステートメントの仕組みを利用します。

<!DOCTYPE html>
<html lang="ja">
<head>
<meta charset="utf-8">
<title>submit</title>
</head>
<body >
<?php
// DB接続情報です
$dsn = 'mysql:host=localhost;dbname=testphp;charset=utf8mb4';
$username = 'root';
$password = '';

// POSTデータを受け取る
$id = $_POST['id'];

// try-catchです。エラー発生時はcatchのロジックが実行されます
try{
	// データベースへの接続を表すPDOインスタンスを生成
	$pdo = new PDO($dsn,$username,$password);

	// :idは、プレースホルダ
	$sql = "select * from fish where id = :id";

	// プリペアドステートメントを作成
	$stmt = $pdo->prepare($sql);
	// プレースホルダと変数をバインド
	$stmt -> bindParam(":id",$id);
	$stmt -> execute(); //実行

	// 1行ずつ取得
	while($rec = $stmt->fetch(PDO::FETCH_ASSOC)){

		// テーブルの項目名を指定して値を表示
		print $rec['id'];
		print $rec['name'];
		print $rec['romaji'];
		print '<br>';
	}

}catch (PDOException $e) {
	// UTF8に文字エンコーディングを変換します
	echo mb_convert_encoding($e->getMessage(),'UTF-8','SJIS-win');
}
// 接続を閉じる
$pdo = null;
?>
</body>
</html>

以下はPHPマニュアルのPDOの接続、および接続の管理のリンクです。
http://php.net/manual/ja/pdo.connections.php

以下はPHPマニュアルのPDO::prepareのリンクです。
http://php.net/manual/ja/pdo.prepare.php

以下はPHPマニュアルのPDOStatement::fetchのリンクです。
http://php.net/manual/ja/pdostatement.fetch.php

以下はPHPマニュアルのmb_convert_encodingのリンクです。
http://php.net/manual/ja/function.mb-convert-encoding.php

関連の記事

PHP MySQLへ接続してselectするサンプル
PHP MySQLへ接続してinsert/update/deleteするサンプル
ローカルにPHPが動く環境を作る手順(XAMPP)
PHP フォームの値をsubmitするサンプル
XAMPPのphpMyAdminでDB作成からデータ取得までのサンプル




△上に戻る