Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/284.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 尝试访问数据时变量不起作用_Php - Fatal编程技术网

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']中有数据?确保会话变量拼写正确,大小写很重要。如果填充的代码没有运行,那么它将是空的。如果这是一个问题,您的构造函数应该检查它。