我想将变量存储到我的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>";
}
?>
答案 0 :(得分:0)
看起来你写了一个错字:
$dbSesisonDate['SessionTime']
^^^
如果您的开发环境中有undefined variable
,则还应该抛出display_errors
错误。
答案 1 :(得分:0)
您的代码中存在多个错误:
在
$dataArraySession = array();
,$dataArraySession
是一个数组,就是这样。所以分配
$dataArraySession[$dbModuleId]=something;
有效,但访问/分配
$dataArraySession[$dbModuleId]["Sesssions"]
(在你的while循环中)无效,因为$dataArraySession[$dbModuleId]
仍未定义;
$dbSessionDate
是来自$sessionqrystmt->bind_result()
的绑定值,因此它可能是字符串或数字,所以
... = $dbSessionDate['SessionTime'] = ...
无效,因为它只是一个字符串,而不是一个数组;
在输出循环中,您还会回显无效变量。
在你的while循环中,$dataArraySession
被定义为
array(
[module_id]s => array(
'Sessions' => array (
[session_id]s => array (
'SessionDate' => _value_
)
)
)
)
所以用
foreach ($dataArraySession as $sessionId => $sessionData)
,$sessionData
仅处于'Sessions' => array (...
级别,因此$sessionData
只有一个密钥'Sessions'
,$sessionData['sessionDate']
和$sessionData['sessionTime']
无效。