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

db->where中有英文符号.的问题

[复制链接]
发表于 2012-7-19 18:19:14 | 显示全部楼层 |阅读模式
本帖最后由 morose 于 2012-7-19 18:21 编辑

组成SQL语句如下:
$CI->db->where("title='手机网民达3.88亿 首超台式电脑用户'",NULL,FALSE)->get('news')



预期中的SQL语句应该是这样的:SELECT * FROM (`fd_news`) WHERE `title='手机网民达3`.`88亿` 首超台式电脑用户'



但是CI帮我生成为:SELECT * FROM (`fd_news`) WHERE `fd_title='手机网民达3`.`88亿` 首超台式电脑用户' AND id<>6。他帮我在字段名前加了表前缀。


跟踪源文件到system/database/db_driver.php的_protect_identifiers(1240行),发现是在这里帮我加的前缀,不明白这个函数是干嘛用的,有没有哪位遇到过这种问题?




发表于 2012-7-19 21:06:47 | 显示全部楼层
config下database.php里$db['default']['dbprefix']

$CI->db->where("title='手机网民达3.88亿 首超台式电脑用户'",NULL,FALSE)->get('news')
我很郁闷这样也可以?
$CI->db->where(array("title"=>"手机网民达3.88亿 首超台式电脑用户"))->get('news')
 楼主| 发表于 2012-7-19 21:38:05 | 显示全部楼层
语句有问题?原来我是把where放在变量里面的
$wheres="title='手机网民达3.88亿 首超台式电脑用户'";
$CI->db->where($wheres,NULL,FALSE)->get('news')

这个问题跟表前缀没关系.我试了传统的方法,就是2楼说的key/value方式,这个CI的解析倒是没问题

本版积分规则