用户
 找回密码
 入住 CI 中国社区
搜索
查看: 10016|回复: 7
收起左侧

[版本 3.x] 关于 CI 框架数据库操作函数 this->db->where() 的问题

[复制链接]
发表于 2015-12-14 15:59:29 | 显示全部楼层 |阅读模式
在使用CI 框架数据库操作函数 $this->db->where 出现一个不知道怎么解决的bug
如:
$this->db->where('key',$key);
若是$key的字符串包含 and or 等sql 关键词就会查询不语句,怎么解决
灰常感谢
发表于 2015-12-15 21:02:24 | 显示全部楼层
$key里没必要用and,or的。$this->db->where()可以调用多次,设置多个条件。多看看文档把
发表于 2015-12-16 23:10:45 | 显示全部楼层
要么就直接写成字符串语句,要么使用键值对的形式,都是可以的,你把你拼装好的SQL语句打印出来就知道该怎么做了
 楼主| 发表于 2015-12-17 11:35:06 | 显示全部楼层
mding 发表于 2015-12-15 21:02
$key里没必要用and,or的。$this->db->where()可以调用多次,设置多个条件。多看看文档把 ...

sorry,我想表达的不是这个意思,
比如说我要写写一条这样的sql语句
select * from test where key = 'some and some';
那么我是不是要写
$key = 'some and some';
$this->db->where('key',$key);
$this->db->get('test');
这样我在ci3.0 是不对的,我用$this->db->last_query() 打印出来的语句是这样的
select * from test where key = 'some and  some' 注:some and(这个位置会多出一个空格 )some,
这样我就查询不到我想要结果
我尝试了很多次,也都没有解决哎!
 楼主| 发表于 2015-12-17 11:35:54 | 显示全部楼层
Michael锐生 发表于 2015-12-16 23:10
要么就直接写成字符串语句,要么使用键值对的形式,都是可以的,你把你拼装好的SQL语句打印出来就知道该怎 ...

sorry,我想表达的不是这个意思,
比如说我要写写一条这样的sql语句
select * from test where key = 'some and some';
那么我是不是要写
$key = 'some and some';
$this->db->where('key',$key);
$this->db->get('test');
这样我在ci3.0 是不对的,我用$this->db->last_query() 打印出来的语句是这样的
select * from test where key = 'some and  some' 注:some and(这个位置会多出一个空格 )some,
这样我就查询不到我想要结果
我尝试了很多次,也都没有解决哎!
 楼主| 发表于 2015-12-17 11:37:16 | 显示全部楼层
Michael锐生 发表于 2015-12-16 23:10
要么就直接写成字符串语句,要么使用键值对的形式,都是可以的,你把你拼装好的SQL语句打印出来就知道该怎 ...

要么就直接写成字符串语句,直接写sql query 是可以的呢,可是很多地方都这样写的代码,改的就太多了
发表于 2015-12-17 21:43:17 | 显示全部楼层
Blue_Sea 发表于 2015-12-17 11:37
要么就直接写成字符串语句,直接写sql query 是可以的呢,可是很多地方都这样写的代码,改的就太多了 ...

你误会我的意思了,我是说where里面的条件写成SQL语句,例如where('(a = 1 or b = 2 and c = 3)')
发表于 2015-12-18 10:42:32 | 显示全部楼层
$this->db->where(array('key1'=>$key1,'key2'=>$key2));

本版积分规则