gdtv 发表于 2009-4-23 11:18:58

如何获取SQL查询结果?

我喜欢直接写SQL,不喜欢用AR
$query = $this->db->query("要执行的 SQL");

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


如果我查询结果是只有一行,用foreach太麻烦,有没有简单的方法呢?例如select * from table limit 0,1

如果我查询的结果只有一行中的一个字段,用foreach更麻烦了,有没有简单的方法呢?例如select titlefrom table limit 0,1

Hex 发表于 2009-4-23 11:22:31

http://codeigniter.org.cn/user_guide/database/results.html
这里有详细介绍,楼主还是仔细看一下吧。

gdtv 发表于 2009-4-23 11:31:22

http://codeigniter.org.cn/user_guide/database/results.html
这里有详细介绍,楼主还是仔细看一下吧。
Hex 发表于 2009-4-23 11:22 http://codeigniter.org.cn/forums/images/common/back.gif
这里已经看过了,这里就是说foreach的,我现在不相用foreach

gdtv 发表于 2009-4-23 11:32:12

$title = $this->db->query("select titlefrom table limit 0,1")->row()->title;
看来这个方法最简便
可是如果没有查询结果,就会报错

Hex 发表于 2009-4-23 11:34:34

row_array() 这个你看过了?这个是返回一行数据。。。。。。。。。。。。。。。。
不知道是怎么仔细看的。。。。。。。

gdtv 发表于 2009-4-23 11:42:54

row_array() 这个你看过了?这个是返回一行数据。。。。。。。。。。。。。。。。
不知道是怎么仔细看的。。。。。。。
Hex 发表于 2009-4-23 11:34 http://codeigniter.org.cn/forums/images/common/back.gif
用_array()就不能写成$title = $this->db->query("select titlefrom table limit 0,1")->row_array()['title'];这样的形式吧?那还不如用row()好了。
我是想用尽量少的语句,查询出数据库中的一个单一结果

上面说的例子,如果用row_array():
$result= $this->db->query("select titlefrom table limit 0,1");
if($result){
$result = $result->row_array();
return $result['title'];
}

要5行语句了,太麻烦

这样只要一行语句:
return $this->db->query("select titlefrom table limit 0,1")->row()->title;
但是如果查不到结果,会报错

Hex 发表于 2009-4-23 12:15:40

那就没办法了,你只能自己写一个类似 Helper 这样的东西,进行二次封装。我就是这么做的。
我想 CI 开发者认为 row() 这样的东西已经比你用纯 PHP 函数方便多了。

gdtv 发表于 2009-4-23 16:35:56

Hex真是很热心啊

Hex 发表于 2009-4-23 16:50:26

呵呵,希望能为大家做点实事

visvoy 发表于 2009-4-23 17:18:47

$title = $this->db->query("select titlefrom table limit 0,1")->row()->title;
看来这个方法最简便
可是如果没有查询结果,就会报错
gdtv 发表于 2009-4-23 11:32 http://codeigniter.org.cn/forums/images/common/back.gif
想不报错,只有扩展row()了,在无结果的时候生成一个null record
页: [1] 2
查看完整版本: 如何获取SQL查询结果?