0

在下面的代码中,我试图检索 moduleid,使用它来运行查询,以便能够找到属于该模块 id 的模块编号和模块名称,然后包含 moduleid、模块编号和模块的会话变量姓名。

我遇到的问题是,即使我正在使用(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'];

}

.

4

1 回答 1

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;
}

如果未找到该模块,最好跳过其余代码并仅显示错误消息。

于 2012-11-29T03:18:38.663 回答