在CodeIgniter中,$this->db->query()
和$this->db->select()
中我们都可以从表格中选择行。谁能简单地总结一下差异呢?
我们可以使用$this->db->query()
运行任何查询。那么使用$this->db->select()
??为什么我们需要它?
答案 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的一部分,您可以指定要选择的字段