You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Codeigniter3过滤查询结果:无法排除指定authstatus值的问题

问题排查与解决

核心问题:逻辑运算符使用错误

你代码里的if($re['authstatus']!='success' || $re['authstatus']!='0300')逻辑存在错误——无论authstatus是什么值,这个条件都会成立:

  • 当authstatus是success时,$re['authstatus']!='0300'为真,整个||条件结果为真
  • 当authstatus是0300时,$re['authstatus']!='success'为真,整个||条件结果为真
  • 其他值时两个判断都为真,条件自然成立

这就导致本该过滤的记录完全没被排除。


解决方案1:修正PHP判断逻辑

把||换成&&,表示**同时不等于success和0300**才执行后续处理:

$res="select * from paymentform order by id desc limit 1000";
$query = $this->db->query($res);
foreach ($query->result_array() as $re) {
    if($re['authstatus']!='success' && $re['authstatus']!='0300'){
        // some processing
    }
}

解决方案2:直接在SQL中过滤(更高效)

推荐在查询阶段就排除不需要的记录,减少数据库返回的数据量,提升性能:

// 用CodeIgniter查询构造器(更安全,避免SQL注入)
$query = $this->db->where_not_in('authstatus', ['success', '0300'])
                  ->order_by('id', 'desc')
                  ->limit(1000)
                  ->get('paymentform');

foreach ($query->result_array() as $re) {
    // some processing
}

// 或者直接编写SQL语句
$res="select * from paymentform where authstatus not in ('success', '0300') order by id desc limit 1000";
$query = $this->db->query($res);
foreach ($query->result_array() as $re) {
    // some processing
}

内容的提问来源于stack exchange,提问作者kite kit

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.10 00:31:16