全文搜索查询在CodeIgniter中不起作用

时间:2012-02-03 15:52:10

标签: php codeigniter

我正在尝试在CodeIgniter中运行全文索引搜索。

我的搜索功能如下:

public function get_searchresult_count($searchresult)
{
    $today_date = date('Y-m-d');
    $db_photos = $this->load->database('photos', TRUE);
    $db_photos->select('*');
    $db_photos->from('photos');
    $db_photos->where('MATCH (`title`, `description`) AGAINST ("'.$searchresult.'")', NULL);
    $db_photos->where('approved', '1');
    return $db_photos->count_all_results();
}

我需要返回count_all_results,因为它需要为结果的分页得到一个数字。

我无法正常工作,我收到了这个错误:

  

错误号码:1064

     

您的SQL语法有错误;检查手册   对应于您的MySQL服务器版本,以便使用正确的语法   靠近'AGAINST(“lime”)和approved ='1''在第3行

     

SELECT COUNT(*)AS numrows FROM(photos)WHERE MATCHtitle,   description)反对(“石灰”)和approved ='1'

有什么想法吗?

2 个答案:

答案 0 :(得分:2)

您需要将where()函数的第三个参数设置为false,以防止自动转义参数。否则,匹配子句中的引号将被转义并创建无效查询。

从AR手册页中逐字逐句

  

$ this-> db-> where()接受可选的第三个参数。如果将其设置为> FALSE,CodeIgniter将不会尝试使用反引号来保护您的字段或表名。

$this->db->where('MATCH (field) AGAINST ("value")', NULL, FALSE);

http://codeigniter.com/user_guide/database/active_record.html

答案 1 :(得分:0)

您需要运行选择查询并返回结果。在'where'子句之后,尝试添加:

$query = $db_photos->get();
return $query->count_all_results();

希望有所帮助。