douhuang3740 2017-11-14 04:37
浏览 58
已采纳

在codeigniter中的条件组

I need to create a query in codeigniter as follows:

SELECT COUNT(*) AS `numrows` FROM `smslog_tbl` WHERE (lower(ResponseStatus) = 'submitted' OR lower(ResponseStatus) = 'inqueue') AND `SMSUsageID` = '1'

so i created a function in model as :

function submittedSMSCount($smsUsageID) {        
    $this->db->where('lower(ResponseStatus)', 'submitted');
    $this->db->or_where('lower(ResponseStatus)', 'inqueue');
    $this->db->where('SMSUsageID', $smsUsageID);
    return $this->db->count_all_results('smslog_tbl');
}

but this function generates a query like :

SELECT COUNT(*) AS `numrows` FROM `smslog_tbl` WHERE lower(ResponseStatus) = 'submitted'OR lower(ResponseStatus) = 'inqueue' AND `SMSUsageID` = '1'

these two queries generates different results because of the conditions. I need to group OR conditions to get the correct result. How can i do this with codeigniter

  • 写回答

3条回答 默认 最新

  • doujuchuan9915 2017-11-14 04:42
    关注
    function submittedSMSCount($smsUsageID) {       
    
    $this->db->where(
           "(lower(ResponseStatus) = 'submitted' OR lower(ResponseStatus) = 'inqueue')", 
           NULL, 
           FALSE
     );  
    $this->db->where('SMSUsageID', $smsUsageID);
    
    return $this->db->count_all_results('smslog_tbl');
    
    }
    

    $this->db->where() accepts an optional third parameter. If you set it to FALSE, CodeIgniter will not try to protect your field or table names with backticks.

    Ref : https://www.codeigniter.com/userguide3/database/query_builder.html#looking-for-specific-data

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(2条)

报告相同问题?

悬赏问题

  • ¥15 xshell无法连接提示ssh服务器拒绝密码
  • ¥15 AT89C52单片机C语言关于串口通信的位操作
  • ¥20 需要步骤截图(标签-服务器|关键词-map)
  • ¥50 gki vendor hook
  • ¥15 灰狼算法和蚁群算法如何结合
  • ¥15 这是一个利用ESP32自带按键和LED控制的录像代码,编译过程出现问题,请解决并且指出错误,指导如何处理 ,协助完成代码并上传代码
  • ¥20 stm32f103,hal库 hal_usart_receive函数接收不到数据。
  • ¥20 求结果和代码,sas利用OPTEX程序和D-efficiency生成正交集
  • ¥50 adb连接不到手机是怎么回事?
  • ¥20 抓取数据时发生错误: get_mooncake_data() missing 1 required positional argument: 'driver'的问题,怎么改出正确的爬虫代码?