请原谅我对此事的无知,但是使用查询生成器有什么意义呢?写一行 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);
对我来说,这似乎更冗长,但我对查询生成器一无所知,所以我可能会错过一些东西。真的很想知道有什么好处。
最佳答案
如果您需要以编程方式构建查询,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 根据您传递的数据以正确的方式构建字符串(使用占位符 ?
),即您不必手动插入 '
关于查询。
编辑
@上校。 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);
关于php - 使用查询生成器有什么好处,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7216882/