libro
www.tuyano.com
初心者のためのPHPプログラミング入門

PDOによるデータベースアクセス (6/7)

作成:2012-07-29 16:59
更新:2012-07-29 16:59

■レコードを検索する

追加と一覧表示が行えるようになったところで、次に「検索」をやってみましょう。検索は、最初にやった「レコードの一覧取得」に似ています。「seleft * from テーブル」で取得をします。ただし、このままでは全レコードを取り出してしまうので、条件を設定する必要があります。
"select * from テーブル where 条件"

テーブル名の後に「where」をつけ、その後に条件を指定します。条件は、「カラム = 値」というように、指定したカラムの値を指定するなど、等号不等号を使った式を指定するのが一般的です。例えば、sampletablename"taro"のものを検索したければ、
select * from sampletable where name = 'taro'
こんな具合にすればいいわけですね。では、先ほどのindex.phpを改良して、名前を検索し表示するようにしてみましょう。(下のリストを参照)

今回は、入力フィールドが1つあるだけのフォームが表示されます。ここで検索する名前を書いて実行すると、その名前のレコードだけが表示されます。

今回は、まず「$query = "select * from sampletable";」というようにしてクエリーを用意します。これだけだと、前レコードを検索しますね。続いて、「if (isset($_POST['name']))」というようにして$_POST['name']が存在するかどうかをチェックし、あった場合には、「$query .= " where name = '$fstr'";」というようにwhere句をクエリーに追加して条件を設定します。これで、name$fstrのものだけが探しだされます。

テキストの検索をする場合、あわせて「あいまい検索」というのも覚えておきましょう。これは「like」という比較演算子を使います。これを利用することで、検索テキストにワイルドカード*)を利用できるようになります。
where name like 'yamada*'
例えば、where句をこのようにすると、nameの値が「yamada」で始まるものがすべて検索されます。"yamada taro"も、"yamadasan"も、yamadaではじまるものはすべて検索できます。

※プログラムリストが表示されない場合

AddBlockなどの広告ブロックツールがONになっていると、プログラムリスト等が表示されない場合があります。これらのツールをOFFにしてみてください。

●プログラム・リスト●

<?php
$result = "";
$query = "select * from sampletable";
if (isset($_POST['name'])){
	$fstr = $_POST['name'];
	if ($fstr != ''){
		$query .= " where name = '$fstr'";
	}
}
try {
	$pdo = new PDO("mysql:host=localhost;dbname=mysampledata;charset=utf8",
			"root","");
	$statement = $pdo->query($query);
	while($record = $statement->fetch(PDO::FETCH_ASSOC)){
		$result .= "<tr>";
		foreach($record as $column){
			$result .= "<td>" . $column . "</td>";
		}
		$result .= "</tr>";
	}
} catch(PDOException $e){
	$result = "#ERR:" . $e->getMessage();
}
$pdo = null;
?>
<!doctype html>
<html lang="ja"> 
    <head> 
        <meta http-equiv="Content-Type"
            content="text/html; charset=UTF-8" /> 
        <title>sample page</title>
        <style>
        h1 { font-size:14pt;
        	padding:5px;
        	background-color:#AAFFFF; }
        table tr td {
        	padding:5px;
        	background-color:#DDFFCC; }
        </style>
    </head>
    <body>
        <h1>Hello PHP!</h1>
        <table>
        <form method="post" action="./index.php">
            <tr><td>検索テキスト:</td><td><input type="text" name="name"></td></tr>
            <tr><td></td><td><input type="submit" value="送信"></td></tr>
        </form>
        </table>
        <hr>
        <table>
        <?php echo $result; ?>
        </table>
    </body>
</html>

※関連コンテンツ

「初心者のためのPHPプログラミング入門」に戻る