Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/243.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
Php 如何使用foreach循环从数据库中获取数据?_Php_Mysql_Codeigniter_Codeigniter 3_Codeigniter 2 - Fatal编程技术网

Php 如何使用foreach循环从数据库中获取数据?

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) {

我试图通过以下查询使用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;
}
这是不正确的:

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,我本来打算添加更多关于存储变量的内容,但是我没有,我变得懒惰了:(我现在就这么做。