2011-03-26 77 views
-1

我正在腳本中進行全文搜索查詢,遇到了麻煩。所以我添加了一個快速的「echo mysql_error」,因爲我不應該得到錯誤的結果。下面是實際的類型化查詢:MySQL/PHP語法錯誤 - 對我來說看起來很好

(*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

哦,是我雙重檢查存在該字段我在搜索一個全文索引正確的表格。 – Adam 2011-03-26 19:26:12

回答

3

您在select條款的字段列表中有where

我想你打算選擇了比分,並從where條款複製粘貼的match...against的東西,而且,作爲一個結果,那where可能是一個複製粘貼錯誤,應刪除:

$query = "SELECT TID, authorUID, timeStarted, 
      MATCH (".$field.") AGAINST ('$against') AS score 
      FROM ".$table." 
      WHERE MATCH (".$field.") AGAINST ('$against')"; 

(該where我除去是在代碼部分的第二行的開頭)

+0

是的,就是這樣,謝謝! – Adam 2011-03-26 19:35:00

+0

不客氣:-)玩得開心! – 2011-03-26 19:37:59

相關問題