Codeigniter中的活动记录自动在where子句值周围添加引号

dot*_*dot 4 php codeigniter

我试着阅读关于stackoverflow的其他文章,还检查了ci的活动记录文档,但是我似乎找不到我的问题的答案

我的模型具有以下逻辑:

    $query = $this->db->get_where('categories', array('parent_id' => $category_id));
Run Code Online (Sandbox Code Playgroud)

根据last_query()方法生成的sql是:

选择* FROM(categories)WHERE parent_id='8'

我需要删除数字8周围的引号。我该怎么做?

我尝试使用select语句并将false作为第二个参数传递。因此,例如:

    $this->db->select('*', false);
    $this->db->from('categories');
    $this->db->where('parent_id=',$category_id);
Run Code Online (Sandbox Code Playgroud)

但这并没有真正改变。有什么建议么?谢谢

hoh*_*ner 5

默认情况下,CodeIgniter会尝试预测比较中的数据类型,并相应地使用适当的SQL语法。如果查询使用单引号,则可能表明$ category_id被视为字符串而不是整数。如果尝试以下操作会发生什么:

$this->db->select('*');
$this->db->from('categories');
$this->db->where('parent_id', (int) $category_id);
Run Code Online (Sandbox Code Playgroud)

另外,您可以手动构造自己的WHERE语句:

$this->db->where('parent_id = ' . (int) $category_id);
Run Code Online (Sandbox Code Playgroud)