0

変数を mysqli:fetch() ステートメントの while ループに格納したいのですが、問題はコードを間違って書いていることです。特に変数 については$dataArraySession、誰でも以下のコードを見て、以下のコードを記述する正しい方法を述べてください。

          $sessionquery = "
             SELECT SessionId, SessionDate, SessionTime, ModuleId
             FROM Session
             WHERE
             (ModuleId = ?)
             ORDER BY SessionDate, SessionTime 
            ";

$sessionqrystmt=$mysqli->prepare($sessionquery);
// You only need to call bind_param once
$sessionqrystmt->bind_param("s",$_POST['modulesDrop']);
// get result and assign variables (prefix with db)

$sessionqrystmt->execute(); 

$sessionqrystmt->bind_result($dbSessionId,$dbSessionDate,$dbSessionTime, $dbModuleId);

 $sessionqrystmt->store_result();

$sessionnum = $sessionqrystmt->num_rows();   

    $dataArraySession = array();

 while ( $sessionqrystmt->fetch() ) { 

 $dataArraySession[$dbModuleId]['Sessions'][$dbSessionId]['SessionDate'] = $dbSessoonDate['SessionTime'] = $dbSessionTime; 

}

foreach ($dataArraySession as $sessionId => $sessionData) {

   $sessionHTML = ""; 
   $sessionHTML .= '<select name="session" id="sessionsDrop">'.PHP_EOL;
   $sessionHTML .= '<option value="">Please Select</option>'.PHP_EOL;           
   $sessionHTML .= "<option value='$sessionId'>" . $sessionId . " - " . $sessionData['SessionDate']. " - " . $sessionData['SessionTime'] ."</option>".PHP_EOL;        
   $sessionHTML .= '</select>';
        }


 if ($sessionnum > 0) {

 ?>

     <form action="<?php echo htmlentities($_SERVER['PHP_SELF']); ?>" method="post">
     <p>Sessions: <?php echo $sessionHTML; ?><input id="sessionSubmit" type="submit" value="Submit" name="sesionsubmit" /></p>      
    </form>       

<?php

}

else {
 echo "<p>Sorry, You have No Sessions under this Module</p>";
}

?>
4

2 に答える 2

0

コードにいくつかのエラーがあります:

  1. $dataArraySession = array();
    

    $dataArraySession配列です。それだけです。だから割り当て

    $dataArraySession[$dbModuleId]=something;
    

    は有効ですが、アクセス/割り当て中です

    $dataArraySession[$dbModuleId]["Sesssions"]
    

    (while ループ内)$dataArraySession[$dbModuleId]はまだ定義されていないため、無効です。

  2. $dbSessionDateは からのバインドされた値な$sessionqrystmt->bind_result()ので、おそらく文字列または数値になるでしょう。

    ... = $dbSessionDate['SessionTime'] = ...
    

    配列ではなく単なる文字列であるため、無効です。

  3. 出力ループでは、無効な変数もエコーしています。

    あなたのwhileループで$dataArraySessionは、次のように定義されています

    array(
      [module_id]s => array(
        'Sessions' => array (
          [session_id]s => array (
            'SessionDate' => _value_
          )
        )
      )
    )
    

    だから

    foreach ($dataArraySession as $sessionId => $sessionData)
    

    $sessionDataは のレベルのみにある'Sessions' => array (...ため、$sessionDataキーが 1 つしかなく、と'Sessions'の両方が無効です。$sessionData['sessionDate']$sessionData['sessionTime']

于 2012-10-18T10:56:34.673 に答える
0

入力ミスのようです:

$dbSesisonDate['SessionTime']
     ^^^

開発環境でオンになってundefined variableいる場合もエラーをスローする必要があります。display_errors

于 2012-10-18T10:06:28.437 に答える