【发布时间】:2013-12-30 11:30:43
【问题描述】:
如果我使用 codeigniter 活动记录从 db 表中获取数据,如下所示:
$where = array("first_name" => "John", "age <" => 30, "status" => "active");
$this->db->where($where);
$query = $this->db->get("my_table");
die(var_dump($this->db->last_query())); // displays the query string
此代码将生成以下查询字符串:
SELECT * FROM (`my_table`) WHERE `first_name` = 'John' AND `age` < 30 AND `status` = 'active'
现在,如果我将字符串分配给 $where 而不是数组,如下所示:
$where = "first_name = 'John' AND age < 30 AND status = 'active'";
然后会产生如下查询字符串:
SELECT * FROM (`my_table`) WHERE `first_name` = 'John' AND age < 30 AND status = 'active'
请注意,当将字符串分配给$where 时,codeigniter 仅在第一个字段的名称周围添加了backticks (``),在我们的例子中是first_name。另一方面,当我们将数组分配给$where时,codeigniter 在所有字段名称周围添加了反引号
我的问题:这是 codeigniter 中的错误还是正常?如果我使用以下代码来防止 codeigniter 在字段名称周围添加反引号:
$this->db->where($where, null, false);
这将产生以下查询字符串:
SELECT * FROM (`my_table`) WHERE first_name = 'John' AND age < 30 AND status = 'active'
以这种方式编写where 部分是否有任何风险或缺点?
【问题讨论】:
标签: php codeigniter activerecord