2012-06-25 74 views
0

我正在嘗試使用Active Record方法中構建的codeigniters執行全文搜索。我有一個「自定義」查詢字符串之前,我幾乎複製到codeigniter代碼(可以這麼說)。 where語句中的某處存在錯誤,但我無法找到它。PHP/Codeigniter - MySQL全文搜索錯誤?

$this->db->select('movies.*'); 
$this->db->from('movies'); 
$this->db->join('movies_genres', 'movies.id = movies_genres.movie_id', 'left'); 
$this->db->join('genres', 'movies_genres.genre_id = genres.id', 'left'); 
$this->db->where('MATCH (movies.movie_title) AGAINST (`'.$query.'`) IN BOOLEAN MODE', null, false); 
//$this->db->group_by('movies.id'); 
//$this->db->limit($count, $page); 

默認情況下,codeigniter可以通過在變量周圍添加反引號來提高安全性。我試着把最後一個參數設置爲false,但仍然沒有運氣。通過評論最後兩行我仍然有同樣的錯誤,如果我註釋掉where語句,錯誤消失(並且我得到結果)。

下面是笨生成的查詢:

SELECT `movies`.* FROM (`movies`) LEFT JOIN `movies_genres` ON `movies`.`id` = `movies_genres`.`movie_id` LEFT JOIN `genres` ON `movies_genres`.`genre_id` = `genres`.`id` WHERE MATCH (movies.movie_title) AGAINST (`the`) IN BOOLEAN MODE 

這裏是錯誤:

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 'BOOLEAN MODE' at line 5 

任何幫助,不勝感激!

回答

1

AGAINST (`'.$query.'`) 

不應該與反引號,但引號。嘗試

AGAINST (\''.$query.'\') 

也,語法似乎是

AGAINST ('+MySQL -YourSQL' IN BOOLEAN MODE); 

如果我正確

+0

不幸的是,同樣的結果。 – qwerty

+0

我懷疑,至少這個錯誤應該有反向/報價代表的變化? – Nanne

+0

好吧,現在qoutes是sigle qoutes而不是反引號。這是我看到的唯一區別。除此之外,它們都是一樣的。 – qwerty