我有一个查询搜索内容表找到行与一些关键字。(codeigniter)
我有一个列来存储关键字(省份名称)。
我有一个主要省份和相关省份,我应该搜索它们。
我有一个关键字数组,不清楚它有多少个索引。
那么我如何搜索包含多个关键字的内容
这是我在模型
中的查询public function province($province_name,$provinces_name,$language)
{
$ps_name = str_replace("-", " ", $provinces_name);
$lang=$language;
$data = $this->db
->select('*')
->from('content')
->where("language",$lang)
->where("keywords",$province_name)
->or_like("keywords","%$ps_name%")
->limit("14")
->order_by("id","DESC")
->get();
if ($data->num_rows > 0) {
return $data->result();
} else{
return false;
}
}
如果您有一个关键字数组,并且您希望一次搜索每个关键字,您可以在循环中使用 $this->db->or_like()
。试试下面的代码:
$keywords = array("keyword1",
"keyword2",
"keyword3",
);
foreach($keywords as $k)
{
$this->db->or_like("keywords", $k);
}
$this->db->where("language", $lang);
$this->db->limit("14");
$this->db->order_by("id", "DESC");
$query = $this->db->get("content");
不确定CI的具体实现,但如果你正在做一个包含多个关键字的搜索功能,你可以看看MySQL的全文搜索(InnoDB或MyIASM)。或者这里有一个很好的教程