php ci group by,查询构造器类 — CodeIgniter 3.0.0 中文手册|用户手册|用户指南|中文文档...

下面的方法用来构建 SELECT 语句。

$this->db->get()

该方法执行 SELECT 语句并返回查询结果,可以得到一个表的所有数据:

$query = $this->db->get('mytable'); // Produces: SELECT * FROM mytable

第二和第三个参数用于设置 LIMIT 子句:

$query = $this->db->get('mytable', 10, 20);

// Executes: SELECT * FROM mytable LIMIT 20, 10

// (in MySQL. Other databases have slightly different syntax)

你应该已经注意到了,上面的方法的结果都赋值给了一个 $query 变量,通过这个变量,

我们可以得到查询的结果:

$query = $this->db->get('mytable');

foreach ($query->result() as $row)

{

echo $row->title;

}

参考 生成查询结果 页面获取关于生成结果的更多信息。

$this->db->get_compiled_select()

该方法和 $this->db->get() 方法一样编译 SELECT 查询并返回查询的 SQL 语句,

但是,该方法并不执行它。

例子:

$sql = $this->db->get_compiled_select('mytable');

echo $sql;

// Prints string: SELECT * FROM mytable

第二个参数用于设置是否重置查询(默认会重置,和使用 $this->db->get() 方法时一样):

echo $this->db->limit(10,20)->get_compiled_select('mytable', FALSE);

// Prints string: SELECT * FROM mytable LIMIT 20, 10

// (in MySQL. Other databases have slightly different syntax)

echo $this->db->select('title, content, date')->get_compiled_select();

// Prints string: SELECT title, content, date FROM mytable LIMIT 20, 10

上面的例子中,最值得注意的是,第二个查询并没有用到 $this->db->from() 方法,

也没有为查询指定表名参数,但是它生成的 SQL 语句中有 FROM mytable 子句。

这是因为查询并没有被重置(使用 $this->db->get() 方法查询会被执行并被重置,

使用 $this->db->reset_query() 方法直接重置)。

$this->db->get_where()

这个方法基本上和上面的方法一样,但它提供了第二个参数可以让你添加一个 WHERE 子句,

而不是使用 db->where() 方法:

$query = $this->db->get_where('mytable', array('id' => $id), $limit, $offset);

阅读下面的 db->where() 方法获取更多信息。

注解

get_where() 方法的前身为 getwhere(), 已废除

$this->db->select()

该方法用于编写查询语句中的 SELECT 子句:

$this->db->select('title, content, date');

$query = $this->db->get('mytable');

// Executes: SELECT title, content, date FROM mytable

注解

如果你要查询表的所有列,可以不用写这个函数,CodeIgniter 会自动查询所有列(SELECT *)。

$this->db->select() 方法的第二个参数可选,如果设置为 FALSE,CodeIgniter 将不保护你的

表名和字段名,这在当你编写复合查询语句时很有用,不会破坏你编写的语句。

$this->db->select('(SELECT SUM(payments.amount) FROM payments WHERE payments.invoice_id=4') AS amount_paid', FALSE);

$query = $this->db->get('mytable');

$this->db->select_max()

该方法用于编写查询语句中的 SELECT MAX(field) 部分,你可以使用第二个参数(可选)重命名结果字段。

$this->db->select_max('age');

$query = $this->db->get('members'); // Produces: SELECT MAX(age) as age FROM members

$this->db->select_max('age', 'member_age');

$query = $this->db->get('members'); // Produces: SELECT MAX(age) as member_age FROM members

$this->db->select_min()

该方法用于编写查询语句中的 SELECT MIN(field) 部分,和 select_max() 方法一样,

你可以使用第二个参数(可选)重命名结果字段。

$this->db->select_min('age');

$query = $this->db->get('members'); // Produces: SELECT MIN(age) as age FROM members

$this->db->select_avg()

该方法用于编写查询语句中的 SELECT AVG(field) 部分,和 select_max() 方法一样,

你可以使用第二个参数(可选)重命名结果字段。

$this->db->select_avg('age');

$query = $this->db->get('members'); // Produces: SELECT AVG(age) as age FROM members

$this->db->select_sum()

该方法用于编写查询语句中的 SELECT SUM(field) 部分,和 select_max() 方法一样,

你可以使用第二个参数(可选)重命名结果字段。

$this->db->select_sum('age');

$query = $this->db->get('members'); // Produces: SELECT SUM(age) as age FROM members

$this->db->from()

该方法用于编写查询语句中的 FROM 子句:

$this->db->select('title, content, date');

$this->db->from('mytable');

$query = $this->db->get(); // Produces: SELECT title, content, date FROM mytable

注解

正如前面所说,查询中的 FROM 部分可以在方法 $this->db->get() 中指定,所以,你可以

选择任意一种你喜欢的方式。

$this->db->join()

该方法用于编写查询语句中的 JOIN 子句:

$this->db->select('*');

$this->db->from('blogs');

$this->db->join('comments', 'comments.id = blogs.id');

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

// Produces:

// SELECT * FROM blogs JOIN comments ON comments.id = blogs.id

如果你的查询中有多个连接,你可以多次调用这个方法。

你可以传入第三个参数指定连接的类型,有这样几种选择:left,right,outer,inner,left

outer 和 right outer 。

$this->db->join('comments', 'comments.id = blogs.id', 'left');

// Produces: LEFT JOIN comments ON comments.id = blogs.id

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值