在codeigniter中$ this-> db-> query()和$ this-> db-> select()之间的区别是什么

时间:2011-11-25 09:07:47

标签: php codeigniter codeigniter-2

在CodeIgniter中,$this->db->query()$this->db->select()中我们都可以从表格中选择行。谁能简单地总结一下差异呢?

我们可以使用$this->db->query()运行任何查询。那么使用$this->db->select() ??为什么我们需要它?

4 个答案:

答案 0 :(得分:3)

根本不知道CodeIgniter,这个名字让它全部消失。使用$this->db->select(),您可以构建并执行SELECT个查询。如果有类似的方法可用是有意义的,例如$this->db->update()$this->db->delete()

$this->db->query看起来适合自定义查询(当可用时,您不应该这样做)

修改

查看文档,现在很清楚,方法$this->db->select是查询构建和链接的一个组成部分,您可以使用一个聪明的系统来选择您的数据,而不需要知道任何SQL,您实际上在哪里必须使用$this->db->query

转义并构建查询

答案 1 :(得分:2)

$this->db->select()只构建查询的一部分;事实上它属于Active Record类,单独使用它并没有意义,因为它只是创建"SELECT field,field1,field3"部分,没有别的。
您需要所有其他部分来构建完整查询,并调用->get()方法,然后检索结果。

$this->db->query()只是一个函数助手,可以让你运行作为参数传递它的查询。

重要区别:Active Record会自动转义查询,而$this->db->query()则不会,因此您应该对单个变量调用$this->db->escape()或使用占位符运行它:

$sql = "INSERT INTO table (field1,field2) VALUES (?,?)";
$query = $this->db->query($sql,array('asd','lol'));

答案 2 :(得分:0)

使用$this->db->select()可以简化编写查询的过程。您始终可以手动编写查询并使用$this->db->query()执行查询,但这将是一项繁琐的任务。因此,您可以使用Active Record类来为您完成魔术。此外,它还将为您逃脱。 当您使用Active Record时,当您告诉它使用$this->db->query()之类的内容获取数据时,CodeIgniter最终将使用$this->db->get()执行查询。

有关使用Active Record的其他一些好处,请参阅本页的前两段 http://codeigniter.com/user_guide/database/active_record.html

答案 3 :(得分:0)

我想用

$this->db->query('YOUR QUERY HERE');

您可以使用

指定完整的查询
$this->db->select()

是ActiveRecord的一部分,您可以指定要选择的字段