0

テキストフィールドの値が「すべて」の場合にすべてのレコードを表示するか、キーワード値に類似したレコードを表示するようにmysqlクエリを記述したいと思います。私はアイデアを与えるために以下のコードを書きました。

if (keyword = 'All' )
    select * from ItemMain
else if (keyword like %itemname%)
    select * from ItemMain   
4

2 に答える 2

0

わかりました。フロントエンド言語として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
于 2013-03-21T17:52:21.743 に答える
0

itemname が列名で、検索文字列パラメーターが?コード内の を置き換える場合。検索文字列を含むすべての項目名を検索する場合、ステートメントは次のようになります。

SELECT   * 
FROM     ItemMain
WHERE    ? = 'All' OR itemname LIKE '%?%'

または、完全一致を探している場合は次のようになります。

SELECT   * 
FROM     ItemMain
WHERE    ? = 'All' OR itemname = ?
于 2013-03-21T17:50:24.613 に答える