我正在尝试使用 Active Record 方法中内置的 codeigniters 执行全文搜索。在此之前我有一个“自定义”查询字符串,我几乎将其复制到了 codeigniter 代码中(可以这么说)。where 语句中的某处有错误,但我找不到。
$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 语句,错误就会消失(我得到结果)。
下面是 Codeigniter 生成的查询:
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
任何帮助是极大的赞赏!