【问题标题】:How to search MySQL database using MATCH AGAINST method that returns only rows that have a particular field value?如何使用 MATCH AGAINST 方法搜索 MySQL 数据库,该方法仅返回具有特定字段值的行?
【发布时间】:2012-08-14 22:36:47
【问题描述】:

我有一个 MySQL 表,其中一个字段是“类别”,其值包括文章、研究、引用等。对于搜索表单,我有与这些类别相对应的复选框,供用户选择,如果不是全部,请从中搜索。

现在,以下 sn-p 适用于不加选择地搜索整个表格(即,从带有“类别”的行中,包括文章、研究、报价等。但是,如果一个人只选择,我将如何更改以下内容“Articles”查询将只返回字段“category”具有相应值的行吗?

$category = $_GET["category"];
$query = "User-submitted query";
$search = mysql_query("SELECT title,body,
MATCH(title, body) 
AGAINST('$query' IN BOOLEAN MODE)
AS score FROM resources
WHERE MATCH(title, body) AGAINST ('$query' IN BOOLEAN MODE)");

我尝试在上面添加WHERE category = '$category'(在这种情况下,$category 将是“Articles”),但没有成功。

顺便说一句:我知道 mysql/mysqli 和安全用户输入问题。

【问题讨论】:

    标签: php mysql search match


    【解决方案1】:

    我发现了问题所在。以下作品:

    $category = $_GET["category"];
    $query = "User-submitted query";
    $search = mysql_query("SELECT title,body,
    MATCH(title, body) 
    AGAINST('$query' IN BOOLEAN MODE)
    AS score FROM resources
    WHERE MATCH(title, body) AGAINST ('$query' IN BOOLEAN MODE)
    AND category = '$category'");
    

    【讨论】:

      【解决方案2】:

      你会反对使用子查询吗?

      SELECT title,body
      FROM(
      
      SELECT title,body,category
      MATCH(title, body) 
      AGAINST('$query' IN BOOLEAN MODE)
      AS score FROM resources
      WHERE MATCH(title, body) AGAINST ('$query' IN BOOLEAN MODE)
      
      ) x 
      WHERE category = '$category'
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2013-01-12
        • 1970-01-01
        • 2021-12-20
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2011-01-31
        相关资源
        最近更新 更多