我正在尝试在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
)WHEREMATCH
(title
,description
)反对(“石灰”)和approved
='1'
有什么想法吗?
答案 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();
希望有所帮助。