没有foreach循环的codeigniter单个结果

Posted

技术标签:

【中文标题】没有foreach循环的codeigniter单个结果【英文标题】:codeigniter single result without foreach loop 【发布时间】:2013-01-25 04:05:52 【问题描述】:

我正在使用 codeigniter 从数据库中获取单个结果,如下所示:

$user = $this->db->query("SELECT * FROM users LIMIT 1");

然后我得到返回的对象并循环遍历它,这样:

foreach ($user->result() as $row)  ... 

您可以想象,使用循环没有意义,因为只有一个结果。有没有办法在不循环的情况下获取用户参数?这一行中的一些东西:

echo $user['name'];

提前致谢。

【问题讨论】:

【参考方案1】:

应该是:

$user = $this->db->query("SELECT * FROM users LIMIT 1")->row_array();

更多详情:http://ellislab.com/codeigniter/user-guide/database/results.html

【讨论】:

【参考方案2】:

假设例如你的模型函数是这样的......

 public function get_users()
 

  $query = "Select * from users limit 1";

  $res=$this->db->query($query);

    if($res->num_rows()>0)
        return $res->result("array");
    
    return array();
 

假设你在你的控制器函数中这样调用这个模型

    $users =  $this->model_file->get_users();

那么你可以像这样回显echo $users[0]['user_name'];

【讨论】:

这种语法我没有遇到任何问题。我将它用于整个应用程序的所有查询。 我从没看到有人提到过;我只看到这个:You can also pass a string to result() which represents a class to instantiate for each result object (note: this class must be loaded) 别担心,我没有 php 和 CI 方面的基本知识。无论如何都要这样,但我可以说........【参考方案3】:
$user = $this->db->query("SELECT * FROM users LIMIT 1")->row();

将其作为对象 (echo $user->name;)

$user = $this->db->query("SELECT * FROM users LIMIT 1")->row_array();

作为一个数组(echo $user['name'];);

$user = $this->db->limit(1)->get('users')->row(); //or ->row_array();

使用增强现实;

$row = $user->first_row();

从结果集($this->db->result())中取出第一行,作为对象(默认);

$row = $user->first_row('array');

从结果集中取出第一行,作为一个数组;

$row = $user->row_array(1);

返回特定行(首先,在这种情况下。只需传递行的<N>)。也适用于$user->row(1);

【讨论】:

【参考方案4】:

做这样的事情

    //in the model
    $query = $this->db->query("your query");

$row = $query->row();

    if (isset($row))
return $row;
else
return false;

然后像这样回显你的结果

echo $row->username;

如果你想将它传递给视图

//in the controller

$this->load->model('somemodel');
        $hm=$this->somemodel->somemethod();
        $data['query']=$hm;
    $this->load->view('path/to/view',$data);

然后以同样的方式回显

echo $row->username;

【讨论】:

以上是关于没有foreach循环的codeigniter单个结果的主要内容,如果未能解决你的问题,请参考以下文章

在codeigniter的foreach循环中形成中断

Codeigniter中foreach循环中的未定义变量

在 PHP CodeIgniter foreach 循环中从数据库中提取和更新数据

CodeIgniter:无循环地插入多条记录

PHP CodeIgniter Foreach 返回不正确的数据

Codeigniter 将查询组合在一个循环中