首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >代码点火器$this->db->where();自定义字符串问题

代码点火器$this->db->where();自定义字符串问题
EN

Stack Overflow用户
提问于 2011-09-25 18:43:12
回答 2查看 46.1K关注 0票数 8

我试图使用自定义字符串来选择一些值。下面是我的代码

代码语言:javascript
复制
  $this->db->from('posted');
  $st="infor='rent' AND (typeq='in' OR typeq='out')";
  $this->db->where($st);  
  $q = $this->db->get();  

发生数据库错误 错误号: 1054个未知列‘infor=’rent‘在’WHERE子句‘中选择* FROM (posted\_ads),其中infor=‘rent’和(typeq=’typeq=‘out’)文件名:infor=‘rent’行号: 330

我认为问题是因为

代码语言:javascript
复制
WHERE `infor='rent'` 

当我手动执行这段代码时,它完美地工作了。

代码语言:javascript
复制
WHERE infor='rent' 

我该如何摆脱

代码语言:javascript
复制
`` 

因为它自动添加了

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2011-09-25 18:48:54

where()添加第三个参数并将其设置为FALSE

代码语言:javascript
复制
  $this->db->from('posted');
  $st="infor='rent' AND (typeq='in' OR typeq='out')";
  $this->db->where($st, NULL, FALSE);  
  $q = $this->db->get();

$this->db->where()接受一个可选的第三个参数。如果您将其设置为FALSE,CodeIgniter将不会试图使用backticks保护您的字段名或表名。

CodeIgniter文档

票数 22
EN

Stack Overflow用户

发布于 2019-06-11 18:07:12

当解决方案起作用时,我想补充一句:小心!您需要保护查询和转义所有值!如果您喜欢使用查询生成器

代码语言:javascript
复制
$q = $this->db->select('*')->from('posted_ads')
    ->where('infor', 'rent')
    ->or_group_start()
            ->where('typeq', 'in')
            ->where('typeq', 'out')
    ->group_end()
->get();

这样,Codeigniter就能处理好逃逸问题。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/7547731

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档