我正在我的脚本中进行全文搜索查询,但遇到了麻烦。所以我添加了一个快速的“echo mysql_error”,因为当我不应该这样做时,我得到了错误的结果。这是实际输入的查询:
(*Sending these args respectively: 'announc_threads', 'subject', 'replying'*)
public function searchFulltext ($table, $field, $against) {
$query = "SELECT TID, authorUID, timeStarted,
WHERE MATCH (".$field.") AGAINST ('$against') AS score
FROM ".$table."
WHERE MATCH (".$field.") AGAINST ('$against')";
这是我得到的错误:
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 'WHERE MATCH (subject) AGAINST ('replying') AS score FROM announc_threads WHERE M' at line 1
看错误,一切看起来都很好。我对查询的最大问题是单/双引号和使用变量(它似乎总是改变它想要的东西) - 但即使那些看起来很好,字符串周围的单引号,没有表/字段名称的引号 - grrr - 你呢看错了什么?
感谢您的帮助。
答案 0 :(得分:3)
您的where
子句中的字段列表中有select
。
我想您打算选择分数,并从match...against
子句中复制粘贴where
内容,因此,where
可能是副本 - 错误,应该删除:
$query = "SELECT TID, authorUID, timeStarted,
MATCH (".$field.") AGAINST ('$against') AS score
FROM ".$table."
WHERE MATCH (".$field.") AGAINST ('$against')";
(我移除的where
是在该部分代码的第二行的开头)