You need to enable JavaScript to run this app.
最新活动
大模型
产品
解决方案
定价
生态与合作
支持与服务
开发者
了解我们

MySQL WHERE子句失效:CodeIgniter项目无法筛选isactive=1的数据

问题分析与修复方案

嘿,我一眼就瞅出你代码里的问题啦!你在设置WHERE条件的时候犯了个语法错误,这正是查询失败的根源。

错误原因

你写的:

->where('isactive'==1)

这里的==是PHP的比较运算符,PHP会先计算'isactive' == 1这个表达式的结果——因为字符串'isactive'会被转换成数字00 == 1的结果是false,所以这行代码等价于->where(false),这显然不是你想要的过滤条件,自然查不到isactive=1的数据。

正确写法

CodeIgniter的Query Builder(包括你用的Datatables扩展)中,where()方法的正确用法是把字段名和值作为两个参数传递,或者传递键值对数组。你需要把这行改成:

->where('isactive', 1)

修正后的完整函数代码

public function displayinfo3() { 
    $user_id = $this->session->userdata('user_id'); 
    if($user_id) { 
        $this->load->library('datatables'); 
        $this->datatables 
        ->select("user_type.user_type as user_type,user.user_name as user_name,user.first_name as first_name,user.middle_name as middle_name,user.last_name as last_name,user.user_id as Actions") 
        ->from("user") 
        ->where('isactive', 1) // 这里是修正后的代码
        ->join("user_type","user_type.user_type_id=user.user_type_id","left") 
        ->edit_column("Actions", "<center><div class='visible-md visible-lg hidden-sm hidden-xs'><div align='center'><div class='col-md-2'><form action='".base_url()."index.php/Registrationc/editpatient3' method='post'><input type='hidden' id='editp3' name='editp3' value='$1'><button title='EDIT PATIENT' class='tip btn btn-primary btn-xs' type='submit' value='Submit' ><i class='fa fa-edit'></i></button></form></div><div class='col-md-2'><a class=\"tip btn btn-danger btn-xs\" title='DELETE PATIENT' href='#' onclick=\"delete_patient('$1')\" ><i class=\"fa fa-trash-o\"></i></a></div></div></div></center>", "Actions"); 
        echo $this->datatables->generate(); 
    } else { 
        redirect(base_url('Registrationc/extra1')); 
    } 
}

额外检查建议

  • 确认user表中确实存在isactive字段,且字段类型是数值型(比如INT),避免字段名拼写错误或者类型不匹配
  • 可以开启CodeIgniter的数据库调试模式,查看生成的SQL语句,确认WHERE条件是否正确生成
  • 检查$user_id是否正确从session获取,确保代码进入了查询的逻辑分支

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

火山引擎 最新活动