基本上,我创建了一个显示mysql数据库结果的表,还有一个用户可以用来过滤结果的搜索框。搜索框创建一个名为$ query的变量。 但是,我不希望显示的结果在数据库中名为“private”的列中包含字母“y”。 我知道如何显示搜索结果,并分别隐藏私有搜索结果,但我无法同时使两个功能同时工作。 我目前拥有的PHP是:
$raw_results = mysql_query("SELECT * FROM file WHERE private != 'y' (`title` LIKE '%".$query."%') OR (`tags` LIKE '%".$query."%') OR (`user` LIKE '%".$query."%') ORDER BY id DESC") or die(mysql_error());
然而,这反过来说:
You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near '(`title` LIKE '%%') OR (`tags` LIKE '%%') OR (`user` LIKE '%%') ORDER BY id DESC' at line 1
我完全被难以理解,因为我看不出如何解决这个问题,我知道这可能是一个非常简单的问题但是你的帮助会非常感激。感谢
答案 0 :(得分:2)
你错过了AND,可能还有一些():
$raw_results = mysql_query("SELECT * FROM file WHERE
private != 'y' AND (
(title LIKE '%".$query."%') OR
(tags LIKE '%".$query."%') OR
(user LIKE '%".$query."%')
)
ORDER BY id DESC"
) or die(mysql_error());
答案 1 :(得分:0)
$raw_results = mysql_query("SELECT * FROM file WHERE private <> 'y' and (title LIKE '%".$query."%') OR (tags LIKE '%".$query."%') OR (user LIKE '%".$query."%') ORDER BY id DESC") or die(mysql_error());
答案 2 :(得分:0)
您需要在()
内添加条件,以便按照您的意愿行事
试试这个:
$raw_results = mysql_query("SELECT * FROM file
WHERE private != 'y' AND (
(`title` LIKE '%".$query."%') OR
(`tags` LIKE '%".$query."%') OR
(`user` LIKE '%".$query."%')
) ORDER BY id DESC") or die(mysql_error());
答案 3 :(得分:0)
也许你需要一个AND:
WHERE private != 'y' AND ((title LIKE '%".$query."%') OR (tags LIKE '%".$query."%') OR (user LIKE '%".$query."%'))