我有一个包含关键字ID [“ 1”,“ 2”,“ 3”,“ 4”,“ 5”,“ 6”]的数据库字段,并且我想在同一字段中搜索多个这些ID
以下是我想要实现的目标:
$tags[] = "\"1\"";
$tags[] = "\"2\"";
$query = $this->db->like(array('ids_keywords' => $tags[0], 'ids_keywords' => $tags[1]));
这里的问题是,由于搜索字段相同,因此codeigniter仅执行最后一个请求,而不执行两个请求。
什么是最好的解决方案?
答案 0 :(得分:0)
尝试以下
$arrTags = [1,2];
$this->db->group_start()
foreach($arrTags AS $strTag)
{
$this->db->like(ids_keywords, '"'.$strTag.'"');
}
$this->db->group_end();
答案 1 :(得分:0)
您可以编写自己的子句:
$where = "ids_keywords='1' AND ids_keywords='2' OR ids_keywords='3'";
$this->db->where($where);
为了安全查询,请使用问号(?)
$sql = "SELECT * FROM some_table WHERE ids_keywords = ? AND ids_keywords = ? AND ids_keywords = ?";
$this->db->query($sql, array(1, 2, 3));
在上面的示例中,问号(?)将替换为query()函数第二个参数中的数组。以这种方式构建查询的主要优点是,将自动转义产生安全查询的值。 CodeIgniter引擎自动为您完成。