【发布时间】:2014-06-12 23:51:13
【问题描述】:
我目前正在为基于 Raspberry Pi 和 Arduino 的 Scalextric 遥测系统开发用户界面。该系统在轨道周围使用了一系列光传感器,这些传感器的输出被插入到一个mySQL数据库中。
根据这些数据,我需要显示比赛统计数据。例如,如果一辆车在赛道起点经过光传感器,则当前圈数增加一。我为此编写了以下代码:
<?
$currentLap = 1;
$checkpointTime = '';
$checkpointNumber = '';
$checkdb = $db -> prepare ("SELECT * FROM laps WHERE `race_id` = :raceID");
$checkdb -> bindParam (':raceID', $raceID);
while ($currentLap <= $totallaps) {
$checkdb -> execute();
while ($row = $checkdb -> fetch()) {
$checkpointTime = $row['checkpoint_time'];
$checkpointNumber = $row['checkpoint_number'];
}
switch($checkpointNumber) {
case 1:
$currentLap = $currentLap + 1;
break;
case 2:
//Lane 2
$currentLap = $currentLap + 1;
break;
}
}
?>
然后我显示当前圈数:
<? echo $currentLap; ?>
但是,当我访问包含此代码的页面时,什么都没有显示,并且页面似乎在持续加载。
while 循环是在数据发生时显示数据的正确方法,还是应该使用另一种方法?
【问题讨论】:
-
你在哪里定义
$raceID?另外,由于您的switch($checkpointNumber)中没有默认值,因此如果while ($row = $checkdb -> fetch())不返回任何行,则$checkpointNumber将永远不会匹配1|2,因此$currentLap永远不会增加,所以你会有一个无休止的循环。 -
@Sean Race ID 在名为“raceStats.php”的文件中定义。我已将此文件包含在页面顶部。我不确定我可以在我的 switch 语句中使用什么作为默认值,因为检查点编号只能是一两个。当汽车绕着轨道行驶时,查询应该始终返回值。
标签: php mysql pdo while-loop