PHP | MySQLのWHERE句のLIKEで複数の語句を指定、検索する方法

PHP,PHP MySQL

MySQLのWHERE句で複数の語句を指定、検索する方法とPHPのサンプルコードを紹介しています。

確認環境

エックスサーバー
PHP 8.016

idnamevalue
1Apple100
2Pine200
3Banana300
4Orange400
サンプルで利用しているテーブル

WHERE句で複数の語句を指定する

// クエリ
$sql = "select * from `table_name` WHERE `name` = 'Apple' OR `name` = 'Banana'";

// クエリを実行
$res = $mysqli->query($sql);
while ($dat = $res->fetch_assoc()) {
	echo $dat['id'] . ' ';
}

// 1 3

WHERE句で複数の語句で検索する

LIKE句を利用して、複数の語句でデータの文字列を検索する方法です。

OR検索を指定した場合、いずれかの語句が含まれているデータを取得します。

以下のPHPサンプルコードでは検索語句とした文字列「a」「b」も含まれているデータ「Apple」「Banana」「Orange」を検出します。

// クエリ
$sql = "select * from `table_name` WHERE `name` LIKE '%a%' OR `name` LIKE '%b%'";

// クエリを実行
$res = $mysqli->query($sql);
while ($dat = $res->fetch_assoc()) {
	echo $dat['name'] . ' ';
}

// Apple Banana Orange

AND検索を指定した場合、指定した語句すべてが含まれているデータを取得します。

検索窓などからの検索結果を返す場合は、この方法になるかと想定します。

以下のPHPサンプルコードでは検索語句とした文字列「a」「b」も含まれているデータ「Banana」を検出します。

// クエリ
$sql = "select * from `table_name` WHERE `name` LIKE '%a%' AND `name` LIKE '%b%'";

// クエリを実行
$res = $mysqli->query($sql);
while ($dat = $res->fetch_assoc()) {
	echo $dat['name'] . ' ';
}

// Banana

PHP,PHP MySQL

Posted by Yousuke.U