在我的下面的代码中,我试图检索moduleid,使用它来运行查询,以便能够找到属于该模块id的模块编号和模块名称,然后包含moduleid,module的会话变量编号和模块名称。
我遇到的问题是,即使我使用(isset()
,我也会获得$_SESSION['idmodule']
和'$ _SESSION ['namemodule'] . Now
$ _ SESSION ['的未定义索引module']`工作正常,该会话变量没有问题,但是其他2个会话变量我遇到了问题。
现在查询是正确的,所以查询没有问题,只是我猜测我如何调用$ _SESSION变量的问题。
以下是代码:
if (isset($_POST['module']))
{
$query = "SELECT ModuleNo, ModuleName FROM Module WHERE ModuleId = ?";
$stmt = $mysqli->prepare($query);
$stmt->bind_param('s', $_POST['module'] );
$stmt->execute();
$stmt->bind_result($moduleno, $modulename);
while ( $stmt->fetch() ) {
// session data
if (isset($moduleno)){
$_SESSION['idmodule'] = $moduleno;
}
if (isset($modulename)){
$_SESSION['namemodule'] = $modulename;
}
}
$_SESSION['module'] = $_POST['module'];
}
答案 0 :(得分:1)
if (isset($moduleno)){
$_SESSION['idmodule'] = $moduleno;
}
if (isset($modulename)){
$_SESSION['namemodule'] = $modulename;
}
这两种陈述都可能会导致$_SESSION['idmodule']
或$_SESSION['namemodule']
无法设置,所以当您稍后引用它们时,您可能会收到警告。
为防止这种情况发生,稍后在代码中您可能需要这样做:
if (isset($_SESSION['idmodule'], $_SESSION['namemodule']) {
// your code here
更好的方法是清理一些事情:
while ( $stmt->fetch() ) {
// inside here $moduleno and $modulename are already set
$_SESSION['idmodule'] = $moduleno;
$_SESSION['namemodule'] = $modulename;
}
如果找不到该模块,最好跳过剩下的代码,只显示错误信息。