Php 为什么我的模型只传递一行而不是所有行?
我在我的模型中运行一个查询,它返回基于前一个查询的其他结果的结果,该查询工作得非常好,但是它只返回一行,而不是它应该返回的所有行 我已经尝试在数组中返回Php 为什么我的模型只传递一行而不是所有行?,php,mysql,codeigniter,Php,Mysql,Codeigniter,我在我的模型中运行一个查询,它返回基于前一个查询的其他结果的结果,该查询工作得非常好,但是它只返回一行,而不是它应该返回的所有行 我已经尝试在数组中返回$rows[],但这不起作用,查询不会基于第一个查询生成任何结果,正如我所说的,如果我返回result\u array(),必须有一种方法在控制器中创建这些数组 模型 控制器 $this->load->model('Main'); $category=$\u GET[“category”]; $data['id\u cat']=$this->Ma
$rows[]
,但这不起作用,查询不会基于第一个查询生成任何结果,正如我所说的,如果我返回result\u array(),必须有一种方法在控制器中创建这些数组代码>
模型
控制器
$this->load->model('Main');
$category=$\u GET[“category”];
$data['id\u cat']=$this->Main->category\u id\u results($category);
回声“;
打印($data['id\u cat']);
回声“;
$id=$data['id_cat']['id'];
$data['category\u results']=$this->Main->category\u results($category,$id);
当我运行print_r($data['id_cat')
我得到了预期的输出(所有行),但是它确实告诉我id
索引未定义。此外,当我执行此操作时,我的查询也无法正常工作。根据您的代码,您似乎希望从类别\u id\u结果中得到一行
如果是这种情况,您可以将最后一行更改为
get()->result_array()代码>
到
get()->row_数组()代码>
然后您可以使用$data['id']
而不是$data[0]['id']
返回结果\u数组时,即使只有一行,也将始终使用整数对其进行索引
如果需要多行,可以使用方便的foreach循环来迭代结果,即使您不知道有多少行
从代码的最后一行开始:
$where = "category_id='$id' OR category_id='$category'";
$this->db->where($where);
$query = $this->db->get('records')->result_array();
如果希望全部记录而不是单行,可以这样尝试
最有可能的情况是,您的id如下:$id=$data['id_cat'][0]['id'];是的,我更改了类别id\u结果
函数中的选择
,只选择id,现在我有一个多维数组,DB自然无法识别,因此这是一个“数组到字符串转换”错误。第一个函数结果如下:Array([0]=>Array([id]=>2))
well:$id=$data[0]['id'];没错,但为什么?我该如何改变呢?看看你的输出:Array([0]=>Array([id]=>2))
是的,这很有效,但仍然只得到一行,我知道我还有其他匹配的行在另一个注释上,我想要所有的结果,而不是一个。哦,我找到了一些东西,我必须在$data
和['id']之间使用整数,我如何为它提供一个整数数组?
$this->load->model('Main');
$category = $_GET["category"];
$data['id_cat'] = $this->Main->category_id_results($category);
echo "<pre>";
print_r($data['id_cat']);
echo "</pre>";
$id = $data['id_cat']['id'];
$data['category_results'] = $this->Main->category_results($category, $id);
$data['category_results'];
foreach ($data['category_results'] as $result) {
echo $result['id'];
}
$where = "category_id='$id' OR category_id='$category'";
$this->db->where($where);
$query = $this->db->get('records')->result_array();