PHP mysql_查询从语法错误中选择*

PHP mysql_查询从语法错误中选择*,php,mysql,sql,Php,Mysql,Sql,基本上,我已经创建了一个显示mysql数据库结果的表格,还有一个搜索框,用户可以使用它来过滤结果。搜索框创建一个名为$query的变量。 但是,我不希望显示的结果在数据库中名为private的列中包含字母y。 我知道如何显示搜索结果,并分别隐藏私人搜索结果,但我无法同时使用这两个功能。 目前我对此的PHP是: $raw_results = mysql_query("SELECT * FROM file WHERE private != 'y' (`title` LIKE '%".$query.

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

我完全被难住了,因为我不知道如何解决这个问题,我知道这可能是一个非常简单的问题,但您的帮助将非常感谢。谢谢

您错过了一个和,可能还有几个:

$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());

你需要把你的条件包括进去,才能像你想的那样工作 试试这个:

 $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());

也许你需要一个

WHERE private != 'y' AND ((title LIKE '%".$query."%') OR (tags LIKE '%".$query."%') OR (user LIKE '%".$query."%')) 

你忘记了一个和之前的标题和附上的ORs。非常感谢你,这立即修复了它!
WHERE private != 'y' AND ((title LIKE '%".$query."%') OR (tags LIKE '%".$query."%') OR (user LIKE '%".$query."%'))