2011-11-25 88 views
0

在CodeIgniter中,在$this->db->query()$this->db->select()中,我们都可以从表中选择行。任何人都可以总结一下这个区别吗?

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

+0

你为什么要问这是一个问题吗?谷歌的这种情况下,你的朋友... – thomaux

+0

当我正在与我的项目工作,这个疑问提出。所以我想澄清它:) –

回答

3

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

$this->db->query看起来是适合定制的查询(你不应该,这时候可用)

编辑:

望着文档,它现在很清楚的是,方法$this->db->select是查询建设和链接,在这里你可以使用一个聪明的系统,而无需了解SQL,你居然要逃跑,并使用$this->db->query

0

使用构建查询来选择数据的一个组成部分为您提供简单的书写查询。您可以始终手动编写查询并使用$this->db->query()执行它,但这将是一项乏味的任务。相反,您可以使用Active Record类来为您提供魔法。另外,它也会为你逃跑。 当您使用Active Record时,CodeIgniter最终将使用$this->db->query()执行查询,当您使用类似$this->db->get()的方式告诉它获取数据时。

请参阅该网页上的前两段使用的Active Record http://codeigniter.com/user_guide/database/active_record.html

2

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

$this->db->query()仅仅是一个函数帮手,让你在运行查询,你把它作为一个参数

重要的区别:。活动记录自动转义查询,而$this->db->query()没有按” t,因此您应该对各个变量调用$this->db->escape()或使用占位符运行它:

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

我觉得跟

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

您可以指定完整的查询与和

$this->db->select() 

这是您指定的字段的ActiveRecord的一部分来选择

相关问题