如果您需要以编程方式构建查询,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);