1

IPアドレスとさまざまなユニットに関する情報を保存しているデータベースの「search.php」に検索機能を構築しています。各ユニットには、データベース内の「カテゴリ」列があります。私の検索の選択肢は、テキスト フィールドでの検索、および/またはドロップダウン リストでのカテゴリの選択です。ドロップダウン リストでカテゴリを選択し、テキスト フィールドに何も入力しないと、正しい結果が得られます (選択したカテゴリを含むすべての行が返されます)。

しかし、テキスト フィールドに何かを入力しても、結果が得られません。

カテゴリのみを選択した場合のクエリ (この場合、「IP アドレス」がカテゴリとして選択されています):

  SELECT dataid,
       firstname,
       lastname,
       data.name dataname,
       description,
       ip,
       TYPE,
       TIMESTAMP
FROM DATA
INNER JOIN USER ON DATA.userid=USER.userid
WHERE TYPE='IP-adress'
  AND DATA.name LIKE '%%'
  AND description LIKE '%%'
  AND ip LIKE '%%'
  AND TYPE LIKE '%%'
  AND firstname LIKE '%%'
  AND lastname LIKE '%%'
ORDER BY TIMESTAMP DESC

私が望むように、これは選択したカテゴリを含むすべての行を返しています。

テキストフィールドに何かを入力したときのクエリ:

    SELECT dataid,
       firstname,
       lastname,
       data.name dataname,
       description,
       ip,
       TYPE,
       TIMESTAMP
FROM DATA
INNER JOIN USER ON DATA.userid=USER.userid
WHERE TYPE='IP-adress'
  AND DATA.name LIKE '%test%'
  AND description LIKE '%test%'
  AND ip LIKE '%test%'
  AND TYPE LIKE '%test%'
  AND firstname LIKE '%test%'
  AND lastname LIKE '%test%'
ORDER BY TIMESTAMP DESC

入力として「テスト」という単語を含む列がある組み合わせがありますが、結果が得られません。

私はかなり長い間それを行ってきましたが、以前は逆の問題があったと確信しています。カテゴリを選択したときに結果が得られなかったのです。

とにかく、別の目がここで私を助けてくれることを願っています. さらにコードが必要な場合は、リクエストしてください。

4

2 に答える 2

0

2 番目のクエリを見ている場合:

WHERE type='IP-adress' 

そして後で:

AND type LIKE '%test%' 

「IPアドレス」には「テスト」が含まれていないため、結果は返されません...

また、2 番目のクエリは、実際には、で指定されたすべてのフィールドにwhere少なくともテキスト「test」が含まれている必要があることを意味します。それは正しいですか?

于 2013-10-29T11:22:37.567 に答える