php – ActiveRecord where_in()与数组
发布时间:2020-12-13 22:05:30 所属栏目:PHP教程 来源:网络整理
导读:到目前为止,我已经尝试了几种不同的方法来解决这个问题.我收到此错误消息: ‘where子句’中的未知列’Array’ SELECT * FROM(Articles)WHERE id IN(Array,Array,Array) 这是我的型号代码: function getStarNews($user_id) { $this-db-select('id'); $this-
到目前为止,我已经尝试了几种不同的方法来解决这个问题.我收到此错误消息:
‘where子句’中的未知列’Array’ SELECT * FROM(Articles)WHERE id IN(Array,Array,Array) 这是我的型号代码: function getStarNews($user_id) { $this->db->select('id'); $this->db->where('user_id',$user_id); $query = $this->db->get('table1'); foreach ($query->result_array() as $id) { //echo $id['id']."<br>"; //displays all of the correct ids I am trying to pass to the where_in() } $id = $query->result_array(); $this->db->where_in('id',$id); //pass array of 'id' from above query $data = $this->db->get('Articles'); return $data->result_array(); } 如果我改变id数组只包含1个值,那么where_in()子句工作正常并输出匹配单个’id’的数据行. 我已经遍布堆栈和谷歌寻求使用where_in()的帮助,我认为我有一切正确或尝试了几种不同的方法来正确传递数组. 谢谢您的帮助. 编辑:最后我将使用我的控制器输出这些数据: $this->output->set_output(json_encode($data)); 出于测试目的,我只是跳过JSON并尝试直接从模型中使用PHP输出数据. 解决方法
您尝试传递的数组是一个多维数组.而是试试这个:
$ids = array(); foreach ($query->result_array() as $id) { $ids[] = $id['id']; } $this->db->where_in('id',$ids); 你不能在没有迭代的情况下展平query-> result_array().但是,如果您需要在应用程序中处理这种类型的查询,并且如果安装了> = PHP 5.3,则可以将以下函数放在Codeigniter帮助文件(或其他合适的地方)中,以帮助您展平数组: function flatten(array $array) { $return = array(); array_walk_recursive($array,function($a) use (&$return) { $return[] = $a; }); return $return; } 在你的情况下使用它像这样: $ids = flatten($query->result_array()); $this->db->where_in('id',$ids); (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |