Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/codeigniter/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Codeigniter 使用关联数组的多类db查询-但都来自相同的列名。。。?_Codeigniter_Foreach_Chained - Fatal编程技术网

Codeigniter 使用关联数组的多类db查询-但都来自相同的列名。。。?

Codeigniter 使用关联数组的多类db查询-但都来自相同的列名。。。?,codeigniter,foreach,chained,Codeigniter,Foreach,Chained,我正在尝试使用CodeIgniter的活动记录类查询我的数据库。我有许多博客文章存储在一个表中。这个查询是为了一个搜索功能,它将拉出所有分配了特定类别的帖子。因此,表中的“类别”列将列出该职位的所有类别,没有特定顺序,用逗号分隔,如:政治、历史、社会学。等等 如果用户选择(比如)政治和历史,则应返回包含这两个类别的所有帖子的标题 因此,查询的类别列表将是数组$cats。我想这会管用的- foreach ($cats as $cat){ $this->db->like('cat

我正在尝试使用CodeIgniter的活动记录类查询我的数据库。我有许多博客文章存储在一个表中。这个查询是为了一个搜索功能,它将拉出所有分配了特定类别的帖子。因此,表中的“类别”列将列出该职位的所有类别,没有特定顺序,用逗号分隔,如:政治、历史、社会学。等等

如果用户选择(比如)政治和历史,则应返回包含这两个类别的所有帖子的标题

因此,查询的类别列表将是数组$cats。我想这会管用的-

foreach ($cats as $cat){
    $this->db->like('categories',$cat);
}
通过制作以下内容:

$this->db->like ('categories','Politics');
$this->db->like ('categories','History');
(这将产生-'WHERE类别,如'%Politics%'和'%History%'等类别)

但它不起作用,它似乎只产生了第一句话。我想问题在于,每个链式查询的列名都是相同的。《CI用户指南》中似乎没有关于此()的任何内容,因为他们似乎假设每个链式语句将用于不同的列名


当然,在一条语句中使用关联数组是不可能的,因为它必须包含重复的键-在这种情况下,每个键都必须是“类别”…

关于MySQL,我只是在我的数据库上运行了以下查询,没有任何问题

 SELECT * 
 FROM  `TicketUpdates` 
 WHERE content LIKE  '%update%'
 AND content LIKE  '%footprints%';
同样,以下代码按预期运行:

 $this->db->select('*'); 
 $this->db->from('TicketUpdates');
 $this->db->like('content', 'update');   
 $this->db->like('content', 'footprints');       
 print_r($this->db->get()->result());
如果在CI中使用“like”函数,则必须使用适当的查询函数对其进行前缀和后缀,例如:

 $this->db->select('*');
 $this->db->from('tablename');
 foreach($cats as $cat){
    $this->db->like('categories', $cat);
 }
 $result = $this->db->get();

您可以使用以下代码

$this->db->select("*")->from($table); foreach($cats as $single_name) $this->db->or_like("categories",$single_name); $result = $this->db->get(); $this->db->select(“*”->from($table); foreach($cats作为$single_name) $this->db->或类似(“类别”、$single\u名称); $result=$this->db->get();
没有人我的问题可以理解吗?谢谢Sean,是的,我意识到子句后面必须有“get”函数等。我现在已经解决了这个问题,这是输入数组本身的问题。。。不过谢谢你。