首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >正在使用isset(),但仍获得未定义的索引

正在使用isset(),但仍获得未定义的索引
EN

Stack Overflow用户
提问于 2012-11-29 11:14:33
回答 1查看 212关注 0票数 0

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

我遇到的问题是,尽管我正在使用(isset(),但我得到了$_SESSION['idmodule']的未定义索引,并且session运行良好,该会话变量没有问题,但其他两个会话变量存在问题。

现在查询是正确的,所以查询没有问题,只是我在猜测如何调用$_SESSION变量的问题。

代码如下:

代码语言:javascript
复制
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'];

}

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2012-11-29 11:18:39

代码语言:javascript
复制
if (isset($moduleno)){
    $_SESSION['idmodule'] = $moduleno;
}
if (isset($modulename)){
    $_SESSION['namemodule'] =  $modulename;
}

这两个语句都可以防止未设置$_SESSION['idmodule']$_SESSION['namemodule'],因此当您稍后引用它们时,您可能会收到警告。

为了防止出现这种情况,在代码的后面你可能需要这样做:

代码语言:javascript
复制
if (isset($_SESSION['idmodule'], $_SESSION['namemodule']) {
    // your code here

更好的方法是清理一些东西:

代码语言:javascript
复制
while ( $stmt->fetch() ) {
    // inside here $moduleno and $modulename are already set
    $_SESSION['idmodule'] = $moduleno;
    $_SESSION['namemodule'] = $modulename;
}

如果找不到模块,最好跳过其余的代码,只显示一条错误消息。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/13618226

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档