在 class PHP 中分配会话变量

Assign session variable inside a class PHP

我正在尝试在 class 中分配一个会话变量,因此我可以在 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'] 打印了帐户名,如果我按照 Vishal 的建议启动会话,该帐户也会在查询中开始打印

解决方案 - 感谢 Vishal

尽管 $_SESSION['account'] 可以很好地打印帐户名,但在添加 session_start(); 之后它也开始在查询中正确打印

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

首先检查会话是否存在,如果不启动会话下面是代码片段

public function __construct($db){
    if( !isset($_SESSION) ){
        session_start(); 
        $this->account = $_SESSION['account'];
    }
    $this->conn = $db;
}