用户
 找回密码
 入住 CI 中国社区
搜索
查看: 3332|回复: 2
收起左侧

[讨论/交流] query->result()返回值

[复制链接]
发表于 2011-10-8 10:53:22 | 显示全部楼层 |阅读模式
本帖最后由 haoren26 于 2011-10-8 10:57 编辑

CI version:2.0.3

Environment:WAMP2.1      Windows2003


CI用户手册这样写到:result() 该方法执行成功返回一个对象数组,失败则返回一个空数组。我们使用下面的方法遍历结果,代码就像这样:
$query = $this->db->query("要执行的 SQL");

foreach ($query->result() as $row)
{
   echo $row->title;
   echo $row->name;
   echo $row->body;
}

我的问题是:如果result()只返回一条记录,那我能不能不用遍历的方法来获得result()返回的值 ,而直接<?=$query->title?>
我的实际例子:我在model里这样写
Mblog.php
PHP复制代码
 
function get_article($article_id)
 
{
$this->db->where('id',$article_id);
$query = $this->db->get('article');
return $query->result(); //应该只返回一条记录,因为id是唯一的
}
 
复制代码


我在controllers里这样写
Blog.php
PHP复制代码
 
$this->load->model('Mblog');
 
$data['query'] = $this->Mblog->get_article($this->uri->segment(3));
$this->load->view('edit_view',$data);
 
复制代码


然后在views里显示
edit_view.php
PHP复制代码
 
<input type="text" name="article_title" value="<?=$query->title?>">  <!-- 此处及以下,一般会用递归变量$row,而我直接用$query可不可以-->
<textarea rows="20" cols="50" name="article_content"><?=$query->article_content?></textarea>
 
 
复制代码

这样子貌似无法将数据库里取出的数据填入文本框,说什么call in non-object,但是model的方法已经返回一个对象了呀,而且控制器里也用一个数组接收这个对象,传给视图页面了,我就不明白了。。。

发表于 2011-10-8 11:19:43 | 显示全部楼层
单条不要用result返回,用row返回
对应的要返回数组就是result_array和row_array()

如果非要用result那么就
如$test = $this->db->xxxxxxx->result();
那么第一条就是$test[0]->
 楼主| 发表于 2011-10-8 12:18:28 | 显示全部楼层
jeongee 发表于 2011-10-8 11:19
单条不要用result返回,用row返回
对应的要返回数组就是result_array和row_array()

谢谢!

本版积分规则