-1

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

4 回答 4

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());
于 2013-10-13T20:22:45.847 回答
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());
于 2013-10-13T20:23:13.533 回答
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());
于 2013-10-13T20:23:48.490 回答
0

也许你需要一个 AND:

WHERE private != 'y' AND ((title LIKE '%".$query."%') OR (tags LIKE '%".$query."%') OR (user LIKE '%".$query."%')) 
于 2013-10-13T20:24:15.603 回答