数据库查询返回由stdClass组成的数组

时间:2016-03-22 16:53:56

标签: arrays database codeigniter session stdclass

我在这里从记录中获取价值时遇到了麻烦。 这就是我想做的事情:  1.从db获取记录  2.将查询结果转换为数组  3.显示数组[0],但得到错误未定义的偏移量:1

var_dump():array(1){[0] => object(stdClass)#23(1){[" nama"] => string(9)"测试名称" }}

自己尝试查询,然后返回一条记录: |用户名| nama | | TESTUSER | Testnama |

那么如何才能获得“测试用户”?

模型/ verify_login_model

function getinfo($username) {
    $this->db->select('nama', 'username');
    $this->db->from('tb_userInfo');
    $this->db->where('username', $username);
    $this->db->limit(1);

    $result = $this->db->get();
    if($result->num_rows()==1) {
        return $result->result();

    } else {
        return false;
    }
}

控制器/ verify_login

public function index(){
    $this->load->model('verify_login_model');
    $username = $this->input->post('username');
    $password = $this->input->post('password');
    $result = $this->verify_login_model->verify($username, $password);
    if($result == $username) {

        $row = $this->verify_login_model->getinfo($username);
        echo var_dump($row);
        $sessiondata = array('name'=>$row[0], 'username'=>$row[1]);
        $this->session->set_userdata($sessiondata);
        $name = $sessiondata['name'];
        $this->load->view('home_view', $name);

    } else {
        redirect('login');
    }
}

查看/ home_view

<html>
<head></head>
<body>
    welcome, <?php echo $name?>
</body>
</html>

2 个答案:

答案 0 :(得分:0)

当您使用

时,模型会返回一个对象数组
return $result->result();

为了将结果作为普通数组使用:

return $result->result_array();

详细了解如何生成查询结果here

答案 1 :(得分:0)

根据CI查询结果显示

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

- &gt; result()此函数将查询结果作为对象数组返回,

stdClass怎么样 - 请查看https://stackoverflow.com/a/931419/2513428

要获得结果,您必须按照以下步骤进行操作

$sessiondata = array('name'=>$row[0]->nama, 'username'=>$row[0]->yourfield);

要想象这一点,就像array(1) { [0]=> object(stdClass)#23 (1) { Your query result } }一样,获取数据指向对象$var[0]->Object。但您也可以更改为 result_array(),并将其视为数组,而不是现在的对象。

result_array()

 $sessiondata = array('name'=>$row[0]['nama'], 'username'=>$row[0]['yourfield']);

希望这会对你有所帮助。