ichou 发表于 2012-11-18 02:12:22

$this->db->where()的子句写法问题

本帖最后由 ichou 于 2012-11-18 02:21 编辑

先看手册:http://codeigniter.org.cn/user_guide/database/active_record.html

4.自定义字符串:
你可以手动的编写子句:

$where = "name='Joe' AND status='boss' OR status='active'";

$this->db->where($where);
不知道大家去验证过没,我测试的时候蛋疼的发现它生成的SQL语句居然是:
SELECT * FROM (`my_table`) WHERE `name='Joe'` AND status='boss' OR status='active'

呃 ,第一个条件居然被视为一个字段名保护起来了 =.=

然后如果在name后加个空格 这样写:
$where = "name ='Joe' AND status='boss' OR status='active'";

$this->db->where($where);

得到的SQL是
SELECT * FROM (`my_table`) WHERE `name` ='Joe' AND status='boss' OR status='active'

为什么会有这么奇葩的事儿呢?是手册错了还是我犯2了?

求围观 求解释



曜日晨阳 发表于 2012-11-18 02:32:05

4.自定义字符串:

下方下方的下方:
$this->db->where() 接受可选的第三个参数。如果你将它设置为 FALSE, CodeIgniter 将不会为你那些包含反勾号的字段名或表名提供保护。

ichou 发表于 2012-11-18 11:55:54

是的 我看到了 但是那个分段 看上去真不像是补充说明的说 很容易误解啊
页: [1]
查看完整版本: $this->db->where()的子句写法问题