为了账号安全,请及时绑定邮箱和手机立即绑定

Codeigniter MySQL 根据会话中的用户 ID 过滤数据

Codeigniter MySQL 根据会话中的用户 ID 过滤数据

PHP
达令说 2022-08-19 16:45:06
我的模型中具有以下功能,可以根据会话中的用户 ID 选择记录。public function getOfficer()    {     $usr = $this->session->userdata('id_user');     $userArray = $this->db->order_by('last_name','ASC')->where_in('tbl_officer.p_code', [8,10,24]);     $userArray1 = $this->db->order_by('last_name','ASC')->get_where('tbl_officer', array('status' => 1, 'usr'=>$this->session->userdata('id_user')));     if($usr == 4){        $this->db->where('p_code',$userArray );     }else{        $this->db->where('usr',$userArray1);     }     $q = $this->db->get('tbl_officer');     if ($q->num_rows() > 0) {        return $q->result();     }     return false;    }如果会话中的用户 4,则应按 p_code [8,10,24] 和会话中的任何其他用户来筛选记录,则应按 usr 筛选记录。usr 列包括用户 ID,如 1,2,3,4 等。但是该函数在错误后退出,并且没有得到预期的结果。错误编号:42000/1064您的 SQL 语法中存在错误;查看与您的 MariaDB 服务器版本对应的手册,了解在第 2 行的“WHERE =”附近使用的正确语法p_code选择 * 其中p_code =文件名:C:/xampp/htdocs/doahrm/application/models/Officer_model.php行号: 106函数中包含第 106 行。$q = $this->db->get();可能出了什么问题?任何人都可以帮忙吗?
查看完整描述

1 回答

?
海绵宝宝撒

TA贡献1809条经验 获得超8个赞

根据原始 sql,丢失了:from table_name


SELECT * WHERE `p_code` = ...

所以你失去了你的表:


$q = $this->db->get('table_name');

我认为你的代码需要看起来像这样:


public function getOfficer()

{

     $usr = $this->session->userdata('id_user');

     if ($usr == 4) {

         $query = $this->db->order_by('last_name','ASC')->where_in('tbl_officer.p_code', [8,10,24]);

     } else {

         $query = $this->db->order_by('last_name','ASC')

                           ->where(array('status' => 1, 'usr'=>$usr));

     }

     $query = $query->get('tbl_officer');

     if ($query->num_rows() > 0) {

         return $query->result();

     } else {

         return false;

     }

}


查看完整回答
反对 回复 2022-08-19
  • 1 回答
  • 0 关注
  • 77 浏览

添加回答

举报

0/150
提交
取消
微信客服

购课补贴
联系客服咨询优惠详情

帮助反馈 APP下载

慕课网APP
您的移动学习伙伴

公众号

扫描二维码
关注慕课网微信公众号