首页 文章

Codeigniter将查询加载到数组中

提问于
浏览
1

我一直在试图弄清楚如何将查询中的数据加载到数组中 .

$query->row() //only brings back a single row of data when there are more entries in the database.

如果我只是在下面的模型代码中使用foreach循环和echo,则数据只会显示在屏幕上 . 它不在变量或数组中 . 它只是屏幕上的文字全部卡在一起 .

我真的很难找到一个代码示例,告诉我如何使用

$this->db->get_where('table' array('column' => $var);

我终于找到了它,但是然后codeigniters网站上的示例只回显到屏幕上的查询 .

http://ellislab.com/codeigniter/user-guide/database/results.html

这对 生产环境 没有用 . 我的控制器代码是:

public function record(){ 
        /*
         * Here the id is being passed to the record
         * function to retieve the parent and childrens data
         * 
         */
        $getid['id'] = $this->uri->segment(3);
        $accld = $getid['id'];

        $data = array();

        $this->load->model('account');
        $account = new Account();
        $account->load($getid['id']);
        $data['account'] = $account;

        $this->load->model('children');
        $children = new Children();
        $children->accld($getid['id']);
        $data['children'] = $children;

        $this->load->view('childeditdisplay', $data );

    }


}

我的模型代码是这样的:

public function accld($id) 
{
    $query = $this->db->get_where($this::DB_TABLE, array('accId' => $id));

    $c_data = array();
    foreach ($query->result() as $row){
         $c_data[] = $row ; 
    }
    return $c_data;

    /*
     * Note:
     * I need to figure out how to load to an array to pass back to the 
     * controller to pass to the display
     * I can echo to the screen the results but that is uncontrolled.
     * 
     */
}

如果我这样做:

public function accld($id) 
{
    $query = $this->db->get_where($this::DB_TABLE, array('accId' => $id));

    foreach ($query->result() as $row){
        echo $row->id ;
        // and all the other fields below here 
    }

}

我的行回显到屏幕上 . 但是没有控制权 . 因此,非常感谢任何帮助控制我的数据 .

ANSWER

这最终会带来所有结果,而不仅仅是一行 .

/**
 * Populate from an array or standard class.
 * @param mixed $row
 */
public function populate($row) {
    foreach ($row as $key => $value) {
        $this->$key = $value;
    }
}

public function accld($id) {

    $query = $this->db->get_where($this::DB_TABLE, array('accId' => $id));

    $this->populate($query->result());
 }

1 回答

  • 1

    做就是了

    $query = $this->db->get_where($this::DB_TABLE, array('accId' => $id));
    $_array = $query->result_array();
    

    用$ _array做任何事情 .

相关问题