您的位置:首页 > 数据库

CI数据库参考

2016-05-12 19:53 351 查看

生成查询结果

有几种不同的方法可以生成查询结果

- 结果行

- 结果数组

- 自定义结果对象

- 结果辅助方法

结果数组

result()方法

该方法返回一个对象数组

$query = $this->db->query("YOUR QUERY");

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


我们还可以传一个字符串参数给result()方法,这个字符串参数代表你想要把妹个结果转换成某个类的类名(这个类必须已经加载)

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

foreach ($query->result('User') as $user)
{
echo $user->name; // access attributes
echo $user->reverse_name(); // or methods defined on the 'User' class
}


result_array()方法

该方法返回一个纯粹的数组,如果没有结果,就返回一个空的数组。一般也是在foreach循环中使用。

$query = $this->db->query("YOUR QUERY");

foreach ($query->result_array() as $row)
{
echo $row['title'];
echo $row['name'];
echo $row['body'];
}


结果行

row()方法

该方法返回单独1行,如果结果不止一行,它只返回第一行。结果是对象形式。

$query = $this->db->query("YOUR QUERY");

$row = $query->row();

if (isset($row))
{
echo $row->title;
echo $row->name;
echo $row->body;
}


如果要返回特定行的数据,可以将行号作为第一个参数传进去。

$row = $query->row(5);


这里还可以加上第二个参数,把参数作为字符串类型,代表把你想要的结果转换成某个类的类名。

$query = $this->db->query("SELECT * FROM users LIMIT 1;");
$row = $query->row(0, 'User');

echo $row->name; // access attributes
echo $row->reverse_name(); // or methods defined on the 'User' class


row_array()方法

这个方法返回的是一个数组,而不是一个对象,其他的和row()方法一样,里面可以传参数。

$query = $this->db->query("YOUR QUERY");

$row = $query->row_array();

if (isset($row))
{
echo $row['title'];
echo $row['name'];
echo $row['body'];
}


可以从下面的方法从结果集中获取前一个,后一个或者最后一个结果:

$row = $query->first_row()
$row = $query->last_row()
$row = $query->next_row()
$row = $query->previous_row()


这些方法默认是返回对象,如果需要返回数组,将”array”作为参数传入即可。

$row = $query->first_row('array')


上面的这些方法都会把所有的结果加载到内存(预读取),当处理结果大结果集时最好使用unbuffered_row()方法。

自定义结果对象

使用自定义结果对象时,类必须已经被加载到内存中。

class User {

public $id;
public $email;
public $username;

protected $last_login;

public function last_login($format)
{
return $this->last_login->format($format);
}

public function __set($name, $value)
{
if ($name === 'last_login')
{
$this->last_login = DateTime::createFromFormat('U', $value);
}
}

public function __get($name)
{
if (isset($this->$name))
{
return $this->$name;
}
}
}


custom_result_object()

返回所有的结果集,参数是类的名字。

$query = $this->db->query("YOUR QUERY");

$rows = $query->custom_result_object('User');

foreach ($rows as $row)
{
echo $row->id;
echo $row->email;
echo $row->last_login('Y-m-d');
}


custom_row_object()

从结果集中返回1行。第一个参数是行号,第二个参数是类名。

$row = $query->custom_row_object(0, 'User');


free_result()

此方法释放查询结果所占的内存。

$query2->free_result();


查询辅助函数

关于执行查询的信息

$this->db->insert_id()

返回新插入行的ID

$this->db->affected_rows()

返回插入更新时,受影响的行数
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  数据库