没有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单个结果的主要内容,如果未能解决你的问题,请参考以下文章
在 PHP CodeIgniter foreach 循环中从数据库中提取和更新数据