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

标签 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) {
        $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 应该是一个数组,在循环内部,查询应该像这样被插入数组:

$result[] = $query->result();

然后最后的数组 ($result) 可以自行循环。

关于php - 如何使用foreach循环从数据库中获取数据?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58045682/

相关文章:

php - 如何将我在wordpress帖子上拥有的每个youtube链接转换为嵌入?

php - 从表中选择或在 codeigniter 中的位置和运算符中选择

php - 类型错误 : Object #<HTMLDivElement> has no method 'fadeTo'

php - 向电子邮件地址来自 Mysql 的不同用户发送邮件

mysql - 如何在 Ansible 中运行 MySQL 查询

php - UTF-8贯穿始终

javascript - DataTables 如何获取单击的行和第一列的值?

php - 最佳实践 : JSON/JQuery/Codeigniter with different tabs

php - 我怎样才能在 yii2 中做一个简单的搜索表单/功能?

php - 在 mySQL 5 TABLES 中使用 INNER JOIN 删除多个表中的多行