在CodeIgniter中,在$this->db->query()
和$this->db->select()
中,我们可以从表中选择行。谁能简单总结一下两者的区别?
我们可以使用$this->db->query()
运行任何查询。那么$this->db->select()
有什么用?我们为什么需要它?
根本不知道CodeIgniter,这个名字就暴露了一切。使用$this->db->select()
可以构建并执行SELECT
查询。如果有类似的方法,比如$this->db->update()
和$this->db->delete()
,那就有意义了。
$this->db->query
看起来像是适合自定义查询(当它可用时,您不应该这样做)
查看文档,现在很清楚,$this->db->select
方法是查询构建和链接的一个组成部分,在那里你可以使用一个聪明的系统来选择你的数据,而不需要知道任何SQL,在那里你实际上必须使用$this->db->query
$this->db->select()
只是构建查询的一部分;它属于活动记录类,事实上,单独使用它是没有意义的,因为它只是创建"SELECT field,field1,field3
"部分,没有别的。
您需要所有其他部分来构建完整的查询,并调用->get()
方法,并在此基础上检索结果。
$this->db->query()
只是一个函数助手,它使您运行您作为参数传递的查询。
重要的区别:活动记录自动转义查询,而$this->db->query()
没有,所以你应该调用$this->db->escape()
对个别变量或使用占位符运行:
$sql = "INSERT INTO table (field1,field2) VALUES (?,?)";
$query = $this->db->query($sql,array('asd','lol'));
使用$this->db->select()
可以简化编写查询。您总是可以手动编写查询并使用$this->db->query()
执行它,但这将是一项繁琐的任务。相反,你可以使用活动记录类,它会为你做这件事。另外,它还可以帮你进行转义。当您使用活动记录时,当您告诉CodeIgniter使用$this->db->get()
之类的东西获取数据时,它最终将使用$this->db->query()
执行查询。
请参阅本页的前两段,了解使用活动记录的其他好处http://codeigniter.com/user_guide/database/active_record.html
我认为
$this->db->query('YOUR QUERY HERE');
可以指定完整的查询,并使用
$this->db->select()
是ActiveRecord的一部分你指定要选择的字段