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 に答える