2012-11-29 70 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

相關問題