Назначьте переменную сеанса внутри класса PHP - PullRequest
0 голосов
/ 28 марта 2020

Я пытаюсь назначить сеансовую переменную внутри класса, чтобы я мог использовать ее в запросе SQL. Я предполагаю, что я делаю что-то не так, поскольку это, кажется, не работает (не присваивая это).

class Records { 

    private $recordsTable = 'services';
    public $account;
    private $conn;

    public function __construct($db){
        $this->account = $_SESSION['account'];
        $this->conn = $db;

    }   

    public function listRecords(){
        $sqlQuery = "SELECT * FROM ".$this->recordsTable." where account='".$this->account."'";
        if(!empty($_POST["search"]["value"])){
            $sqlQuery .= 'where(id LIKE "%'.$_POST["search"]["value"].'%" ';
            $sqlQuery .= ' OR name LIKE "%'.$_POST["search"]["value"].'%" ';
            $sqlQuery .= ' OR approved LIKE "%'.$_POST["search"]["value"].'%") ';           
        }
}

Если я жестко закодирую имя учетной записи в конструкции, как этот, запрос работает

$this->account = "AccountName";

Если я повторяю $_SESSION['account'], он также печатает учетную запись

Он не работает, только если я использую его следующим образом

$this->account = $_SESSION['account'];

Когда я печатаю $sqlQuery учетная запись становится пустой, когда я использую $this->account = $_SESSION['account'];

Итак, $_SESSION['account'] установлен правильно, и сам запрос тоже правильный

ОБНОВЛЕНИЕ:

Странно, хотя $_SESSION['account'] печатает имя учетной записи, если я начну сеанс, как предложил Вишал, учетная запись начнет печататься также внутри запроса

Ответы [ 2 ]

1 голос
/ 28 марта 2020

Сначала проверьте, существует ли сессия, если она не запущена. Ниже приведен фрагмент кода

public function __construct($db){
    if( !isset($_SESSION) ){
        session_start(); 
        $this->account = $_SESSION['account'];
    }
    $this->conn = $db;
}
0 голосов
/ 28 марта 2020

Решение - Благодаря Vishal

Хотя $_SESSION['account'] печатал имя учетной записи нормально, после добавления session_start(); он также начал правильно печатать внутри запроса тоже

if(!isset($_SESSION)){
   session_start();
   $this->account = $_SESSION['account'];
}
...