2012-11-29 37 views
0

在我的代码下面,我试图检索moduleid,使用它来运行查询,以便能够找到属于该模块ID的模块编号和模块名称和然后包含模块号,模块号和模块名称的会话变量。使用isset(),但仍然得到未定义的索引

我遇到的问题是,即使我使用(isset(),我得到未定义指数$_SESSION['idmodule']和“$ _SESSION [” namemodule“] . Now $ _SESSION [”模块']`工作正常,没有问题该会话变量,但我有问题的其他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

isset()被用在错误的地方。删除你添加的那些,而是将它们应用到这一行“ {$ _SESSION ['idmodule']} {$ _SESSION ['namemodule']}” –

+0

你说你的查询是'正确的',但你确定'$ stmt-> execute();'没有失败?尝试在'$ stmt-> execute();'&'$ stmt-> bind_result($ moduleno,$ modulename);'==>'$ stmt-> execute()或die($ stmt->错误); $ stmt-> bind_result($ moduleno,$ modulename)或die($ stmt-> error);' – Sean

回答

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

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

+0

所以你要说它应该是'if(isset($ _ SESSION ['idmodule'],$ _SESSION ['namemodule' ]){ {$ _SESSION ['idmodule']} {$ _SESSION ['namemodule']}}'? ' – user1861818

+0

@ user1861818这将是一种方法;也阅读我的答案更新。 –

+0

我越来越解析错误,如果我尝试做我在评论中提到的'解析错误:语法错误,意外的T_ENCAPSED_AND_WHITESPACE,期望T_STRING或T_VARIABLE或T_NUM_STRING' – user1861818

相关问题