使用Query Builders有什么好处

时间:2011-08-27 19:33:40

标签: php mysql codeigniter query-builder

请原谅我对此事的无知,但使用Query Builders有什么意义呢?编写一行SQL而不是3行AR代码是不是更简洁:

$this->db->query(" SELECT title, contents FROM data WHERE id = 2 ");

而不是:

$this->db->select('title, contents');
$this->db->from('data');
$this->db->where('id', 2);

这对我来说似乎更加冗长,但我再一次对Query Builders一无所知,所以我可能会遗漏一些东西。真的很想知道它有什么好处。

3 个答案:

答案 0 :(得分:2)

如果您需要以编程方式构建查询,CodeIgniter的Active Records比纯文本更舒适,

$id = 2;

//with CodeIgniter's Active Record
$this->db->select('title, contents');
$this->db->from('data');
if(isset($id))
   $this->db->where('id', $id);

//without CodeIgniter's Active Record
if(isset($id))
   $where = " WHERE id = {$id}";
$this->db->query(" SELECT title, contents FROM data".$where);

好的,这并没有改变那么多,但如果你对where子句有10个约束怎么办?

此外,CodeIgniter的Active Record根据您传递的数据以正确的方式(使用占位符?)构建字符串,即您不必在查询上手动插入'

修改

@col。 Shrapnel说CodeIgniter的Active Record没有任何好处,因为我不同意他的意见我试图用另一个例子强化我的论文:

让我们为INSERT语句做一个例子:

$array = array('A'=>'aaaa','B'=>'bbbb','C'=>'cccc');

//without CodeIgniter's Active Record
$query = "INSERT INTO my_table (";
$query.= implode(',',array_keys($array)) .')';
$query.= ......

//with CodeIgniter's Active Record
$this->db->insert('my_table',$array);

答案 1 :(得分:2)

我看不出任何好处。
达伦说,“这不是那么多”。 并且在where子句中使用10个约束AR变得更加冗长和混乱,使您完全无法掌握查询的含义。而且还没有加入!

您真正需要的唯一事情就是支持占位符 使用占位符,您的查询将变得安全且易于撰写。

答案 2 :(得分:0)

你抱怨的节目风格应该不受SQL injection attacks的限制。当然,假设您正在与之交谈的数据库界面做出合理的引用和转义。