Php Codeigniter MySQL根据会话中的用户ID过滤数据
在我的模型中,我有以下功能,可以根据会话中的用户ID选择记录Php Codeigniter MySQL根据会话中的用户ID过滤数据,php,mysql,sql,codeigniter,Php,Mysql,Sql,Codeigniter,在我的模型中,我有以下功能,可以根据会话中的用户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 =
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_代码[8,10,24]进行过滤,并且会话中的任何其他用户,记录应按usr进行过滤。usr列包括用户ID,如1、2、3、4等
但是函数在出现错误后退出,并没有得到预期的结果
错误号码:42000/1064
您的SQL语法有错误;检查手册
对应于要使用的正确语法的MariaDB服务器版本
第2行“WHEREp_code
=”附近
选择*WHEREp\u code
=
文件名:C:/xampp/htdocs/doahrm/application/models/Officer\u model.php
电话号码:106
行号106是$q=$this->db->get()函数中的代码>
可能出了什么问题?有人能帮忙吗?根据原始sql,表名称中的丢失:
选择*WHERE`p\u code`=。。。
所以你失去了你的桌子:
$q=$this->db->get('table_name');
我认为您的代码需要如下所示:
getOfficer()公共功能
{
$usr=$this->session->userdata('id_user');
如果($usr==4){
$query=$this->db->order_by('last_name','ASC')->where_in('tbl_officer.p_code',[8,10,24]);
}否则{
$query=$this->db->order\u by('last\u name','ASC')
->其中(数组('status'=>1,'usr'=>$usr));
}
$query=$query->get('tbl_officer');
如果($query->num\u rows()>0){
返回$query->result();
}否则{
返回false;
}
}
@TsaiKoga。修改为我的编辑。但还是有同样的问题。@TsaiKoga。这是错误号:42000/1064您的SQL语法有错误;检查与您的MariaDB服务器版本相对应的手册,以了解第3行“”附近使用的正确语法,从tbl_officer
中选择*其中p_code
=文件名:C:/xampp/htdocs/doahrm/application/models/officer_model.php行号:107@TsaiKoga。从tbl\u officer
中选择*,其中p\u code
=@MCITTrends现在可以找到您的表格。但是Officer_model.php行号上出现了新的错误:107,这行代码是什么?@TsaiKoga$q=$this->db->get('tbl_officer');