テキストフィールドの値が「すべて」の場合にすべてのレコードを表示するか、キーワード値に類似したレコードを表示するようにmysqlクエリを記述したいと思います。私はアイデアを与えるために以下のコードを書きました。
if (keyword = 'All' )
select * from ItemMain
else if (keyword like %itemname%)
select * from ItemMain
テキストフィールドの値が「すべて」の場合にすべてのレコードを表示するか、キーワード値に類似したレコードを表示するようにmysqlクエリを記述したいと思います。私はアイデアを与えるために以下のコードを書きました。
if (keyword = 'All' )
select * from ItemMain
else if (keyword like %itemname%)
select * from ItemMain
わかりました。フロントエンド言語としてPHPを想定すると、次のようにすべてを1つのクエリにまとめることができます(中かっこはご容赦ください。いつ必要かどうかわからないため、使いすぎる傾向があります)。
$query = <<< ENDSQL
SELECT *
FROM ItemMain
WHERE ('{$keyword}' = 'All') OR (your_textfield like '%{$keyword}%')
ENDSQL;
... execute the query
しかし、実際には@cjgからの提案を使用して、2つの異なるクエリを使用します。
$query = "";
if ($keyword == 'All') {
$query = "SELECT * FROM ItemMain";
} else {
$query = "SELECT * FROM ItemMain WHERE your_textfield LIKE '%{$keyword}%'";
}
... execute the query
itemname が列名で、検索文字列パラメーターが?
コード内の を置き換える場合。検索文字列を含むすべての項目名を検索する場合、ステートメントは次のようになります。
SELECT *
FROM ItemMain
WHERE ? = 'All' OR itemname LIKE '%?%'
または、完全一致を探している場合は次のようになります。
SELECT *
FROM ItemMain
WHERE ? = 'All' OR itemname = ?