PHP mysql_query SELECT * FROM语法错误

时间:2013-10-13 20:21:24

标签: php mysql sql

基本上,我创建了一个显示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

我完全被难以理解,因为我看不出如何解决这个问题,我知道这可能是一个非常简单的问题但是你的帮助会非常感激。感谢

4 个答案:

答案 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."%'))