PHP MySQL column total


PHP MySQL column total

我需要一些帮助来修复我的一些代码。

我有一个查询,从表中取出一些行,但我需要它在列'Price'中的一个合计值。

我已经得到了总计算工作良好和输出,但它似乎打破了我的重复区域进一步向下的页面。我假设这与WHILE语句有关,但我不完全确定如何修复它。谁能建议一种方法来修复它或提供一个替代方案。

mysql_select_db($database_otters, $otters);
$query_CartDetails = "SELECT eventregistrations.*, swimmers.*, events.*, eventtypes.*, timetable.*     FROM eventregistrations LEFT JOIN swimmers ON eventregistrations.SwimmerID=swimmers.SwimmerID LEFT JOIN events ON eventregistrations.EventID=events.EventID JOIN eventtypes ON events.EventTypeID=eventtypes.EventTypeID JOIN timetable ON eventregistrations.ParentDiaryID=timetable.DiaryID WHERE eventregistrations.SessionID = '$sessionid'";
$CartDetails = mysql_query($query_CartDetails, $otters) or die(mysql_error());
$row_CartDetails = mysql_fetch_assoc($CartDetails);
$totalRows_CartDetails = mysql_num_rows($CartDetails);
$cartvalue= 0;
while ($num = mysql_fetch_assoc($CartDetails)) {
    $cartvalue += $num['Price'];
}

这是重复区域的代码,如果我注释掉上面的'cartvalue'部分,它可以正常工作:

<?php do { ?>
<tr>
    <td><?php echo $row_CartDetails['Fixture']; ?></td>
    <td><?php echo $row_CartDetails['EventType']; ?></td>
    <td><?php echo $row_CartDetails['SwimmerFName']; ?> <?php echo $row_CartDetails['SwimmerSName']; ?></td>
    <td>£<?php echo $row_CartDetails['EventCost']; ?></td>
</tr>
<?php } while ($row_CartDetails = mysql_fetch_assoc($CartDetails)); ?>

问题就在这里

while ($num = mysql_fetch_assoc($CartDetails)) {
    $cartvalue += $num['Price'];
}

循环遍历结果集,白循环后的指针将被设置为结果集的末尾。因此,如果您对同一结果集进行进一步迭代,则可能一无所获。

在这种情况下,当你需要再次进行迭代时,你需要使用

重置指针

mysql_data_seek

所以在运行第二个循环之前做一些

mysql_data_seek($CartDetails, 0) ; // this will set the pointer to the 1st row
注意:如果你使用的是已弃用的mysql函数版本,请开始使用mysqli或pdo和准备好的语句

你好,一个可能的原因,我可以弄清楚是做while循环将运行第一次总是无论while条件为真与否,所以我建议你使用while循环

<?php while ($row_CartDetails = mysql_fetch_assoc($CartDetails)) { ?>
<tr>
    <td><?php echo $row_CartDetails['Fixture']; ?></td>
    <td><?php echo $row_CartDetails['EventType']; ?></td>
    <td><?php echo $row_CartDetails['SwimmerFName']; ?> <?php echo $row_CartDetails['SwimmerSName']; ?></td>
    <td>£<?php echo $row_CartDetails['EventCost']; ?></td>
</tr>
<?php } ?>

以上代码将保存额外的