【问题标题】:Codeigniter ActiveRecord not showing all resultsCodeigniter ActiveRecord 未显示所有结果
【发布时间】:2015-09-24 13:13:43
【问题描述】:

所以我试图从数据库中提取所有用户的所有名称,但我只得到一个,在本例中是它在表中找到的第一个结果。这是我正在尝试的代码:

public function getAllUsers(){

    $query = $this->db->get('user');
    $result = $query->result();

    foreach ($result as $record)
    {
       return $record->name;
    }

}

我已经尝试了很多说服但无济于事。我正在使用 var_dump 在视图上显示它。我也已经尝试在 vewi 中循环它,但没有任何反应。有什么帮助吗?

EDIT[SOLVED]:在这种情况下,foreach 将循环并带来所有记录,但一旦完成,所有数据都会丢失,因此为了保留数据,建议我创建一个首先是空数组,然后将数据设置为循环内的数组,然后在循环完成后返回该数组。谢谢!

【问题讨论】:

    标签: php codeigniter activerecord


    【解决方案1】:

    您的 foreach 循环只运行一次并返回数据。您需要将数据存储到数组和结果中

    $data=array(); // define empty array
    foreach ($result as $record)
        {
           $data[]= $record->name;// assign name to array
        }
        return $data;// return data
    

    【讨论】:

    • 我已经尝试过了,但这只会带来表中的最后一条记录:(
    • 是的,谢谢你们!这行得通!不知道为什么,为什么这有效?
    • 返回类型后一切都消失了。您需要将数据存储到数组中,并在循环后返回。
    • 该方法也会在第一个循环中退出。如果您只需要在给定数组中找到一个值,则循环内的 return 语句将很有用。
    【解决方案2】:

    试试这个:

    public function getAllUsers(){
        $query = $this->db->get('user');
        $result = $query->result();
        $name = array();
        foreach ($result as $record)
        {
           $name[] =  $record->name;
        }
        return $name ; 
    
    }
    

    【讨论】:

    • 非常感谢!同时给出相同的答案:) 有什么解释吗?
    • 您返回的是$record->name;,因此对于第一条记录,函数返回了第一个值,循环无法继续进行。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多