Php 尝试访问数据时变量不起作用
我不想在_构造中设置类变量,而是在_构造调用的方法中设置类变量。我不确定我是不是在做这件事Php 尝试访问数据时变量不起作用,php,Php,我不想在_构造中设置类变量,而是在_构造调用的方法中设置类变量。我不确定我是不是在做这件事 class request{ private $sNote; private $iAffectedUserId; private $iUserId; private $sPassword; private $sFirstName; private $sLastName; public function __construct($sService, $oData, $iAffectedUserId){
class request{
private $sNote;
private $iAffectedUserId;
private $iUserId;
private $sPassword;
private $sFirstName;
private $sLastName;
public function __construct($sService, $oData, $iAffectedUserId){
$this->iUserId = $_SESSION['user_Id'];
$this->sPassword = $_SESSION['password'];
$this->sFirstName = $_SESSION['firstName'];
$this->sLastName = $_SESSION['lastName'];
switch($sService){
case 'note':
$this->requestNote();
break;
default:
echo "ErrorCode: 4000";
break;
}
}
public function requestNote(){
$sQuery = "SELECT * FROM `note` WHERE `sender_Id` = '" . $this->iUserId . "'";
echo $sQuery;
$oResult = conn($sQuery);
if(!is_array($oResult)||!isset($oResult)||empty($oResult)||is_null($oResult)){
echo "ErrorCode: 5000";
} else{
//echo $this->iUserId;
echo json_encode($oResult);
}
}
}
此代码的结果将my$sQuery
保留一个空值,其中$this->iUserId
为空。这意味着不返回任何内容
另一种编写代码的方式
class request{
private $sNote;
private $iAffectedUserId;
private $iUserId;
private $sPassword;
private $sFirstName;
private $sLastName;
public function __construct($sService, $oData, $iAffectedUserId){
$this->init_Session_Variables();
switch($sService){
case 'note':
$this->requestNote();
break;
default:
echo "ErrorCode: 4000";
break;
}
}
private function init_Session_Variables(){
$this->iUserId = $_SESSION['user_Id'];
$this->sPassword = $_SESSION['password'];
$this->sFirstName = $_SESSION['firstName'];
$this->sLastName = $_SESSION['lastName'];
}
public function requestNote(){
$sQuery = "SELECT * FROM `note` WHERE `sender_Id` = '" . $this->$iUserId . "'";
echo $sQuery;
$oResult = conn($sQuery);
if(!is_array($oResult)||!isset($oResult)||empty($oResult)||is_null($oResult)){
echo "ErrorCode: 5000";
} else{
//echo $this->iUserId;
echo json_encode($oResult);
}
}
}
这样我就错了,说:
注意:未定义的变量:第95行C:\xampp\htdocs\apps\MyVyn\Utils\Utils\php\userQuery.php中的iUserId我在这里真是不知所措。发生了什么事?你的iUserID前面还有一美元
$sQuery = "SELECT * FROM `note` WHERE `sender_Id` = '" . $this->$iUserId . "'";
应该是
$sQuery = "SELECT * FROM `note` WHERE `sender_Id` = '" . $this->iUserId . "'";
关于错误消息有什么不清楚的?此外,您不能再缩小代码范围了?您确定设置了会话吗?@johncode对于两组不同的代码,有两个不同的结果。错误是很明显的,但这并不能确切说明我把事情搞砸了。我试着设置变量并以我知道的方式访问它,所以如果你知道另一种方法,请告诉我。这就是我求助于stackoverflow和其他人寻求帮助的原因。@Serg我相信变量已经设置好了,因为站点中需要设置它们的其他部分工作正常。@Serg我认为您关于_会话的看法是正确的。尽管会话是为站点的其他部分设置的,但在这个页面上,它们正在被删除。我在上面的第一组代码中尝试了这一点。它不返回任何内容,因为查询字符串中的变量出于某种原因为空。是否确定$\u会话['user\u Id']中有数据?确保会话变量拼写正确,大小写很重要。如果填充的代码没有运行,那么它将是空的。如果这是一个问题,您的构造函数应该检查它。