我正在尝试使用带有以下查询的foreach循环从CodeIgniter中的数据库中获取数据,但我仅获得了最后一个结果。
public function get_tags($limit, $start, $tag_id)
{
$snippetstagdata = $this->getDataOneColumn("snippets_tags","tag_id",$tag_id);
foreach ($snippetstagdata as $getSnippet) {
$snippet_id = $getSnippet->snippet_id;
$this->db->limit($limit, $start);
$this->db->select('*');
$this->db->from('snippets');
$this->db->where("id", $snippet_id);
//$this->db->like('snippet_tags',$query);
$query = $this->db->get();
}
$result = $query->result();
$this->db->save_queries = false;
return $result;
}
getDataOneColumn
函数是
public function getDataOneColumn($table, $col1_name, $col1_value)
{
$this->db->where("$col1_name", $col1_value);
$query = $this->db->get("$table");
$result = $query->result();
$this->db->save_queries = false;
return $result;
}
答案 0 :(得分:0)
这是不正确的:
foreach ($snippetstagdata as $getSnippet) {
$snippet_id = $getSnippet->snippet_id;
$this->db->limit($limit, $start);
$this->db->select('*');
$this->db->from('snippets');
$this->db->where("id", $snippet_id);
//$this->db->like('snippet_tags',$query);
$query = $this->db->get();
}
$result = $query->result();
您正在遍历数据中的每个项目,每次都重置$query
,但是当您退出循环时,仅使用$query
一次。
您需要移动此行:
$result = $query->result();
在循环内部获取正确的输出。
编辑:
如前所述,这也不是100%。 $ result应该是一个数组,并且在循环内部应将查询按如下方式推入数组:
$result[] = $query->result();
然后可以单独循环遍历最后一个数组($ result)。
答案 1 :(得分:0)
就像@steve一样,每次运行循环时,您都将替换$ query-> result()。因此,首先您需要创建一个关联数组来处理此问题。因此您的代码应为:
$data = array();
foreach ($snippetstagdata as $getSnippet) {
$snippet_id = $getSnippet->snippet_id;
$this->db->limit($limit, $start);
$this->db->select('*');
$this->db->from('snippets');
$this->db->where("id", $snippet_id);
//$this->db->like('snippet_tags',$query);
$query = $this->db->get();
$result = $query->result();
$data[$snippet_id][] = $result;
}
然后,您可以从$ data数组中获取所有内容。 希望有帮助
答案 2 :(得分:0)
您应该尝试一下
public function get_tags($limit, $start, $tag_id) {
$snippetstagdata = $this->getDataOneColumn("snippets_tags", "tag_id", $tag_id);
$review = [];
foreach ($snippetstagdata as $getSnippet) {
$snippet_id = $getSnippet->snippet_id;
$this->db->limit($limit, $start);
$this->db->select('*');
$this->db->from('snippets');
$this->db->where("id", $snippet_id);
//$this->db->like('snippet_tags',$query);
$query = $this->db->get();
$result[] = $query->result();
}
$this->db->save_queries = false;
return $result;
}