从PHP mySQL搜索结果中排除值


Excluding Values From PHP mySQL search results

我已经阅读了排除结果在PHP和mySQL,但我似乎不能找出正确的语法搜索代码,我正在使用

在我的所有其他结果表中,只是从数据库中提取信息,而不必使用搜索表单,排除用户级别很容易实现,只需在"WHERE"语句后包括以下内容:

WHERE `userlevel` !='9' AND `userlevel` !='1' AND `userlevel` !='4' AND `userlevel` !='5' AND `userlevel` !='6'

现在,我使用的搜索代码使用"OR"而不是"AND"answers"LIKE"的术语。它看起来像这样:

//Set the MySQL query
if ($search == NULL or $search == '%'){
} else {
for ($i=0; $i<count($keywords); $i++) {
$query = "SELECT * FROM sound_users " .
"WHERE genre LIKE '%".$keywords[$i]."%'".
" OR genre2 LIKE '%".$keywords[$i]."%'" .
" OR genre3 LIKE '%".$keywords[$i]."%'" .
" OR bandname LIKE '%".$keywords[$i]."%'" .
" ORDER BY genre";
}

我在其他一些论坛上看到"NOT in (SELECT *)...."被用来排除数据,但似乎每个代码使用标点符号不同-有不同的语法-所以我不太确定如何排除特定的值与这个搜索代码。

我尝试过简单的角度,如:

" OR userlevel !='5'" .
" OR userlevel !='9'" .

,这只会对搜索结果做一些奇怪的事情,结果是同时在两个不同的表中包含这两个用户级别,这些表堆叠在一起。所以我把"OR"改为"AND"-就像我的其他代码一样,也不起作用。

在这一点上,我试图添加"NOT IN"answers"NOT EXISTS"的例子,我发现,但无论我怎么做,似乎总是回来与一个错误告诉我检查语法。

我想知道是否有可能使用"OR"从搜索结果中排除特定值,或者如果排除仅适用于基本代码,只需从数据库中调用值即可显示,而不一定使用搜索表单。

括号是你的好朋友!

WHERE 
  (X LIKE '%X%' OR Y LIKE '%Y%' OR Z LIKE '%Z%')
  AND
  (X NOT LIKE '%XX%' OR Y<>'abc' OR LENGTH(Z)<5 OR A<>7)

BTW:通常在SQL中表示不相等的符号是<>,而不是!=