0

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

$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 语法有错误,但我不确定它是什么,任何指针?

4

2 回答 2

2

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()
);
于 2012-05-06T10:59:30.053 回答
0

有时即使语法是正确的,也会出现此错误,因为某些 SQL 版本不支持此语法。

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

于 2014-01-30T12:41:50.337 回答