PHPで空白区切りの絞り込み検索キーワードをSQL文に反映

PHPで絞り込み検索キーワードをSQL分に反映

検索サイトでは下記のように、キーワードに空白を区切って、データを絞り込むようなものが多いと思います。

スペースで区切られた検索キーワードを基に、SQL文を発行します。

以下は、組み立てられたSQL文をweb上に表示させているだけです。実際には、DBに検索するような形になります。まあこんな検索なんてないですけど。SQL構文はなんでもよかったんで気にせず。

explode関数で単語を分割し、分割された単語の分だけwhere句に条件を足していきます。


<html>
<head></head>
<body>
	<?php
	//POST送信されたデータを$text1へ
	$text1 =@$_POST["text1"];

	//SQL(テーブルから列を抽出する
	$sql ="SELECT 列名 FROM 表名 ";
	//キーワードが入力されているときはwhere以下を組み立てる
	if (strlen($text1)>0){
		//受け取ったキーワードの全角スペースを半角スペースに変換する
		$text2 = str_replace(" ", " ", $text1);

		//キーワードを空白で分割する
		$array = explode(" ",$text2);

		//分割された個々のキーワードをSQLの条件where句に反映する
		$where = "WHERE ";

		for($i = 0; $i <count($array);$i++){
			$where .= "(列名 LIKE '%$array[$i]%')";

			if ($i <count($array) -1){
				$where .= " AND ";
			}
		}
	}


	?>
	<form method="POST" action="<?php echo $_SERVER["PHP_SELF"]?>">
		<table>
			<tr>
				<td><input type="text" name="text1"></td>
				<td><input type="submit" value="検索" name="sub1"></td>
			</tr>
		</table>
	</form>
	<?php
	//組み立てたSQL分を表示する
	echo "<p>組み立てたSQL分: ".$sql.@$where;

	?>
</body>
</html>