使用LIKE和OR进行搜索

时间:2011-05-22 11:24:38

标签: php mysql

我有这段代码:

if(!isset($_GET['query'])) {
  echo "<h1>No search query specified.</h1><a href='index.php'>Return</a>";
} else {
  $query = trim($_GET['query']);
  $query = mysql_real_escape_string($query);
  $query = mysql_query("SELECT * FROM warps 
                        WHERE name LIKE '%$query%' 
                        OR desc LIKE '%$query%' OR keywords LIKE '%$query'");
  if($query) {
    while($row = mysql_fetch_assoc($query)) {
       echo $row['name'];
    }
  } else {
    echo "<h1>No results found</h1>";
  }
}

当我输入与我的数据库中的信息相对应的搜索查询时,为什么不返回任何结果?

3 个答案:

答案 0 :(得分:3)

你不能调用字段desc。或者,如果你这样称呼它就像使用这个`desc`。 DESC是一个命令,因此在您的查询中MySQL认为您希望减少某些内容。

答案 1 :(得分:1)

尝试&#34; var_dump&#34;你的查询和结果,你回来了。 确保您启用了错误报告:

error_reporting(E_ALL);
ini_set('display_errors', 1);

如上所述,您的查询包含MySQL-Keyword DESC作为列名。 如果没有办法重命名该列,您可以将其包含在这样的反引号中:

`desc`

答案 2 :(得分:0)

无论出于何种原因,您选择不使用反引号来划分字段名称。

您可以经常使用此功能,但在您的情况下,您不能,因为DESC是关键字。

写:

SELECT * FROM `warps`
 WHERE `name` LIKE '%$query%' 
    OR `desc` LIKE '%$query%'
    OR `keywords` LIKE '%$query'