Php 如何使用foreach循环从数据库中获取数据?
我试图通过以下查询使用foreach循环从CodeIgniter中的数据库获取数据,但我只得到最后一个结果Php 如何使用foreach循环从数据库中获取数据?,php,mysql,codeigniter,codeigniter-3,codeigniter-2,Php,Mysql,Codeigniter,Codeigniter 3,Codeigniter 2,我试图通过以下查询使用foreach循环从CodeIgniter中的数据库获取数据,但我只得到最后一个结果 public function get_tags($limit, $start, $tag_id) { $snippetstagdata = $this->getDataOneColumn("snippets_tags","tag_id",$tag_id); foreach ($snippetstagdata as $getSnippet) {
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;
}
这是不正确的:
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[] = $query->result();
然后,最终的数组($result)可以自行循环 这是不正确的:
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[] = $query->result();
然后,最终的数组($result)可以自行循环 就像@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数组中获取所有内容。
希望这有助于就像@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数组中获取所有内容。
希望对你有所帮助你应该试试这个
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;
}
你应该试试这个
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;
}
$result
变量仍在循环中被覆盖。它应该是一个数组,并使用$result[]
将查询结果放入数组更正,我本来打算添加更多关于存储变量的内容,但是我没有,我变得懒惰了:(我现在就这么做。$result
变量仍然在循环中被覆盖。它应该是一个数组并使用$result[]
为了将查询结果放入arrayCorrect,我本来打算添加更多关于存储变量的内容,但是我没有,我变得懒惰了:(我现在就这么做。