在 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;
}
我正在尝试在 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;
}