【问题标题】:MYSQL syntax error while using MATCH () AGAINST()使用 MATCH () AGAINST() 时出现 MYSQL 语法错误
【发布时间】:2012-05-06 10:54:03
【问题描述】:

我尝试查询数据库以查找单独表中两列之间的相关结果,为此我使用以下代码:

$query = "SELECT * FROM $table WHERE MATCH (TITLE) AGAINST ($description) AND ARTIST=$band ORDER BY relevance DESC";
    $result = mysql_query($query);
    if (!$result) {
        die("Result False on line 47: $result <br>
            Query: $query <br>
            Error: " . mysql_error());
    }

如您所料,错误消息显示我的 MYSQL 语法有错误,但我不确定它是什么,有什么指针吗?

【问题讨论】:

    标签: php mysql match-against


    【解决方案1】:

    AGAINST ($description) 应该是AGAINST ('$description')

    ARTIST=$band 应该是ARTIST='$band'

    任何通过查询处理的字符串都需要用单引号 (') 括起来,而带有空格的列名需要反引号 (`)。

    如果$description$band 包含任何引号或斜杠,您需要使用mysql_real_escape_string() 对其进行转义(我还是建议这样做)

    此外,您可以将 die 语句合并到查询行中:

    $result = mysql_query($query) or die(
    "Result False on line 47: $result <br>
                Query: $query <br>
                Error: " . mysql_error()
    );
    

    【讨论】:

      【解决方案2】:

      有时甚至语法是正确的,这个错误就会出现,因为某些 SQL 版本不支持这种语法。

      在考虑其他方式之前,请确保您的 MySQL 版本是否支持此查询。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2012-05-22
        • 2012-03-15
        • 2011-11-10
        • 1970-01-01
        • 2019-05-17
        • 2019-11-09
        • 2013-01-24
        • 1970-01-01
        相关资源
        最近更新 更多