2012-05-06 402 views
0

我想查詢數據庫來查找單獨的表兩列之間的相關結果要做到這一點,我用下面的代碼:MYSQL語法錯誤()

$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語法有錯誤,但我不確定它是什麼,任何指針?

回答

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() 
); 
0

有時甚至語法正確,因爲某些SQL版本不支持此語法,所以此錯誤即將到來。

在尋找其他方法之前,請確保您的MySQL版本支持此查詢。