|
发表于 2010-10-12 17:18:41
|
显示全部楼层
本帖最后由 qi_ruo 于 2010-10-12 17:25 编辑
一般在sql语句中的表名和字段名上需要加上反引号(`)防止因为字段出现关键字而发生错误,
默认情况下$this->db->where() 会给表名和字段名自动加上反引号
codeIgniter中可以通过$this->db->last_query();查看最后一次查询语句
关于$this->db->where()函数的四种用法;
1 简单的 key/value 方法:
codeIgniter中$this->db->where()默认是给字段加上反引号的
比如$this->db->where('name','Joe')将生成 WHERE `name` = 'Joe'
2 自定义 key/value 方法:
codeIgniter是通过找key的第一个空格来找出字段名的,并给字段名加上反引号
所以 $this->db->where('name!=','Joe');这样写会变成 `name!=` 'Joe'引发错误
正确的写法应该是 $this->db->where('name !=','Joe');
3 关联数组方法:
也可以包含运算符,但同样需要在各个字段名后留下至少一个空格
4 自定义字符串:
这个貌似有点问题,codeIgniter依然是找第一个空格,然后把空格前的看成字段名,所以
$this->db->where("name = 'Joe' AND age = '23'");
转换为`name` = 'Joe' AND age = '23',
age字段名并没有加上反引号,所以不推荐这种写法,
如果一定要这种写法,可以自己手动加上反引号,比如
$this->db->where("`name` = 'Joe' AND `age` = '23'",NULL,FALSE);
第3个参数为FLASE时,系统不会为字段自动加反引号,这个时候字段名后的空格就不是必需的了,
所以你也可以$this->db->where("`name`='Joe' AND `age`='23'",NULL,FALSE);
但最好还是留个空格吧,又美观,又不容易引发错误,何乐而不为呢? |
|