Codeigniter MySQL фильтрация данных по идентификатору пользователя в сеансе - PullRequest
0 голосов
/ 26 января 2020

У меня есть следующая функция в моей модели для выбора записей в соответствии с идентификатором пользователя в сеансе.

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 содержит идентификаторы пользователей, такие как 1,2,3,4 и c.

Но функция вышла из-за ошибки и не получила ожидаемого результата.

Номер ошибки : 42000/1064

В синтаксисе SQL произошла ошибка; проверьте руководство, соответствующее вашей версии сервера MariaDB, чтобы узнать правильный синтаксис для использования рядом с 'WHERE p_code =' в строке 2

SELECT * WHERE p_code =

Имя файла: C: / xampp / htdocs / doahrm / application / models / Officer_model. php

Номер строки: 106

Номер строки 106 равен $q = $this->db->get(); в функции.

Что может быть не так? Кто-нибудь может помочь?

1 Ответ

1 голос
/ 26 января 2020

Согласно необработанному 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;
     }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...