簡體   English   中英

選擇並顯示Codeigniter中的所有行

[英]Select and display all rows in Codeigniter

我是Codeigniter框架的新手,我想問一問是好的還是它存在另一種在視圖頁面中顯示數據庫中所有行的方法。

我有這個控制器:

    class Dashboard extends CI_Controller{

            public function index()
    {

$data['user'] = $this->dashboard_model->get_user_details($this->session->userdata('logged_in'));  

            $this->load->view('includes/header', $data);

模型儀表板:

class Dashboard_model extends CI_Model{

    public function get_user_details($user_id){

        $this->db->select("*");
        $this->db->where('id', $user_id);
        $result = $this->db->get('users');
        return $result->result_array ();
    }
}

我在視圖頁面中顯示如下:

<?php echo $user[0]['id']; ?> <?php echo $user[0]['username']; ?>

代碼正在工作,它向我展示了我想要的東西,但我不知道這是否是一個好的解決方案。

您還可以使用return $result->row_array (); 如果僅返回單行。

然后在您的視圖文件中使用以下命令獲取數據: $user['id'];

對於多行:

您的解決方案很好,但是您需要添加foreach循環並獲取數據

例如:

foreach($user as $usr) {
  echo $usr['id']; echo  "<br/>";
  echo $usr['username'];
}

通過應用$this->db->where('id', $user_id); 您將僅獲得結果(1)具有$user_id的用戶(並非所有用戶),以及(2)僅在數據庫中存在具有該ID的用戶時才得到結果。 獲取所有用戶的正確方法如下:稍加修改功能以支持僅返回一個用戶:

/**
 * @param int $user_id When NULL will return all users
 * @return array
 */
public function get_user_details($user_id = null) {
    $this->db->from('users');
    if (!is_null($user_id)) {
        $this->db->where('id', $user_id);
        $q = $this->db->get();
        if ($q->num_rows() !== 1) {
            return array();
        }
        return $q->row_array();
    } else {
        return $this->db->get()->result_array();
    }
}

因此,要獲取所有用戶: $this->dashboard_model->get_user_details()

要登錄用戶: $this->dashboard_model->get_user_details($this->session->userdata('logged_in'))

要獲取ID為123的用戶: $this->dashboard_model->get_user_details('123')

$user_id為空白時,您可以通過如下結果:

if (count($users) !== 0) {
    foreach ($users as $user) {
        echo $user['id'];
        echo $user['username'];
    }
} else {
    echo 'No users';
}

設置$user_id ,您將得到一個結果,因此它將起作用:

if (count($users) !== 0) {
    echo $users['id'];
    echo $users['username'];
} else {
    echo 'User with that id does not exist!';
}

更新的答案: 根據commnets中提供的詳細信息

而不是return $result->result_array(); 使用return $result->row_array();

查看:

<?php echo $user['id']; ?>
<?php echo $user['username']; ?>

為了獲取多行:

return $result->result_array(); 將為您提供用戶表中存在的所有用戶的數組。

您需要做的是,使用foreach循環在視圖頁面中訪問那些用戶。

<?php   
foreach ($user as $row) {
    echo $row['id'];
    echo $row['username']; 
}
?>

對於單用戶信息,我將使用row_array()或row()

https://www.codeigniter.com/userguide3/database/queries.html

<?php

class Dashboard_model extends CI_Model{

    public function get_user_details($user_id){

        $this->db->where('id', $user_id);
        $result = $this->db->get('users');
        return $result->row_array();
    }
}

控制者

<?php

class Dashboard extends CI_Controller {

    public function index()
    {

        $this->load->model('dashboard_model');

        // Use the users id stored in your session when logged in 
        $userinfo = $this->dashboard_model->get_user_details($this->session->userdata('id'));  

        $data['id'] = $userinfo['id']; 

        $data['username'] = $userinfo['username']; 

        $this->load->view('includes/header', $data);

        }

}

然后在視圖上回顯

<?php echo $username;?> example <?php echo $id;?>

在您的模型中

class Dashboard_model extends CI_Model{
public function get_user_details($user_id){

return this->db->get_where('users', array('id' => $user_id))->result_array(); //You can use result_array() for more than one row and row_array() only for one row
//If you want to show all rows form database use this return $this->db->get('users')->result(); OR result_array()
}

}

在您看來

對於多行使用foreach循環

foreach($user as $usr){
echo $usr['']; //Add all your database data here like this
}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM