它无法识别 php 变量,因为 echo 上没有出现任何内容


It is not recognising a php variable as nothing appears on echo

在下面的代码中,它无法识别变量$userid,该变量确定登录的教师的ID,但在mysqli代码中,当我回显它时,它无法确定$userid。但它确实知道用户已通过其$userid登录。所以我的问题是,为什么在mysqli中找不到$userid?请查看 mysqli bind_param()设置中的评论,这就是问题所在。

下面是代码,php和mysqli:

让我声明一下,成员.php是包含$userid信息的脚本:

    <?php
     session_start();
        include('member.php');
    ...
        function PickSession()
        {
            //Get data from database
            $sessionquery = "
                SELECT s.SessionId, SessionName, s.TeacherId
                FROM Session s
                INNER JOIN Session_Complete sc ON sc.SessionId = s.SessionId
                WHERE
                (ModuleId = ? AND Complete = ? AND s.TeacherId = ?)
                ORDER BY SessionName 
                ";
            $complete = 1;
            global $mysqli;
            $sessionqrystmt=$mysqli->prepare($sessionquery);
            // You only need to call bind_param once
            $sessionqrystmt->bind_param("iii",$moduleId, $complete, $userid);//it doesn't recognse $userid
            // get result and assign variables (prefix with db)
            $sessionqrystmt->execute(); 
            $sessionqrystmt->bind_result($dbSessionId,$dbSessionName,$dbTeacherId);
            $sessionqrystmt->store_result();
            $sessionnum = $sessionqrystmt->num_rows();  
echo $userid; //nothing displayed in this echo
    ...
            if ((isset($username)) && (isset($userid))){ //user is successfully logged in
            include('teachername.php');
    ...
        <?php

        ShowAssessment(); // Show information

            }else{ 
    echo "Please Login to Access this Page | <a href='./teacherlogin.php'>Login</a>";
    }
            ?>

成员.php脚本:

if (isset($_SESSION['teacherid'])) {
      $userid = $_SESSION['teacherid'];
  }
if (isset($_SESSION['teacherusername'])) {
      $username = $_SESSION['teacherusername'];
  }
        ?>

您尚未初始化$userid变量,您必须设置用于在查询中绑定变量的值,否则它将占用该变量NULL值。

$userid = "value";
$sessionqrystmt->bind_param("iii",$moduleId, $complete, $userid);

$userid变量在 PickSession() 中无法访问。因此,建议要么$userid为全局,要么将其作为函数中的参数传递。

可能是因为缺少session_start()

在你的PickSession函数中,$userid没有值,因为你还没有定义它,例如,当你调用它时,你应该将变量传递给函数;

function PickSession($userid)
{
    ...
}
// Now call PickSession with the variable assigned:
PickSession($userid);

您无权访问函数中的$userid。您可以执行的操作:

$userid声明为全局变量(不推荐)

function PickSession() {
    global $userid;
    // and the rest of the function here
}

$userid作为参数传递给函数PickSession