在下面的代码中,它无法识别变量$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