PHPで検索フォームを作成する
目標
データベースから名前を検索する検索フォームを作成します。

環境
Windows10
XAMPP 7.4.10
方法
今回のコードは、”XAMPPでPHPを使ってMySQLにアクセスする“のコードを一部改変したものです。先にそちらをご覧いただくことをお勧めします。
検索フォーム
postメソッドを使用します。フォームの名前は、以下のように”word”としました(この名前は、後ほど値を取得するのに使用します)。
<form action="" method="POST"> <label>Name:</label> <input type="text" name="word" /> <input type="submit" value="Search" /> </form>
データベースに接続する
“XAMPPでPHPを使ってMySQLにアクセスする“と同じ手順で、データベースに接続します。
<?php $dsn = 'mysql:host=localhost;dbname=photo_sharing'; $username = 'root'; $password = '********'; if ($_POST) { // when the word is submitted $dbh = new PDO($dsn, $username, $password); $search_word = $_POST['word']; // execute sql and get data here
結果を取得し、表示する
SQL
select分を使用して、データベースからデータを取得します。この場合は、戦闘が一致する名前を取得したいので、LIKE句を使用してパターンマッチングを行います。
$sql ="select * from user where name like '".$search_word."%'"; $sth = $dbh->prepare($sql); $sth->execute(); $result = $sth->fetchAll(); if($result){ foreach ($result as $row) { echo $row['name']." "; echo $row['age']; echo "<br />"; } } else{ echo "not found"; }
ソースコード
以下が、完成したコードになります。
index.php
<!DOCTYPE html> <html> <head> <meta charset="utf-8"> <title>test</title> </head> <body> <div>Search user name</div> <form action="" method="POST"> <label>Name:</label> <input type="text" name="word" /> <input type="submit" value="Search" /> </form> <?php $dsn = 'mysql:host=localhost;dbname=photo_sharing'; $username = 'root'; $password = '********'; if ($_POST) { try { $dbh = new PDO($dsn, $username, $password); $search_word = $_POST['word']; if($search_word==""){ echo "input search word"; } else{ $sql ="select * from user where name like '".$search_word."%'"; $sth = $dbh->prepare($sql); $sth->execute(); $result = $sth->fetchAll(); if($result){ foreach ($result as $row) { echo $row['name']." "; echo $row['age']; echo "<br />"; } } else{ echo "not found"; } } }catch (PDOException $e) { echo "<p>Failed : " . $e->getMessage()."</p>"; exit(); } } ?> </body> </html>
結果
入力し、searchボタンを押すと、一致する名前の一覧が表示されます。
