Php Mysql sum函数结果显示在每一行中
我有以下数据库结构Php Mysql sum函数结果显示在每一行中,php,mysql,Php,Mysql,我有以下数据库结构 id email lat long point balance date 1 33 1.00 2.00 0 empty date 2 34 8.00 3.00 -1 empty date 3 33 7.00 4.00 2
id email lat long point balance date
1 33 1.00 2.00 0 empty date
2 34 8.00 3.00 -1 empty date
3 33 7.00 4.00 2 empty date
4 33 6.00 5.00 0 empty date
5 33 6.33 5.43 -1 empty date
所以我想显示所有记录,其中电子邮件id是33,但它必须显示在每一行的余额,例如
In first row it's balance is 0
second row it's balance is 2
third row it's balance is 2
four row it's balance is 1
因此,我的php代码如下所示,但无法获得正确的平衡:
echo "<table width='100%' cellpadding='5' cellspacing='0' border='1'>";
echo "<tr>";
echo "<td class='tdhead' valign='top' width='100'><b>Date</b></td>";
echo "<td class='tdhead' valign='top' width='100'><b>Lattitude</b></td>";
echo "<td class='tdhead' valign='top' width='50'><b>Longitude</b>
</td>";
echo "<td class='tdhead' valign='top' width='50'><b>Point</b>
</td>";
echo "<td class='tdhead' valign='top' width='50'><b>Balance</b>
</td>";
echo "</tr>";
while($res = mysql_fetch_array($park_history))
{
$lat = $res['lat'];
$long = $res['long'];
$point = $res['point'];
$date = $res['date'];
$balance = 0;
$sum = mysql_query("SELECT SUM(point) AS points FROM balance WHERE email =
'".$_SESSION['SESS_ID']."'");
$sum_res = mysql_fetch_array($sum);
$sum = $sum_res['points'];
echo "<tr>";
echo "<td class='tdhead2' valign='top'>$date</td>";
echo "<td class='tdhead2' valign='top'>$lat</td>";
echo "<td class='tdhead2' valign='top'>$long</td>";
echo "<td class='tdhead2' valign='top'>$point</td>";
echo "<td class='tdhead2'
valign='top'>$sum</td>";
echo "</tr>";
}
echo”“;
回声“;
呼应“日期”;
呼应“格度”;
回声经度
";
“回声”点
";
“回声”天平
";
回声“;
而($res=mysql\u fetch\u数组($park\u history))
{
$lat=$res['lat'];
$long=$res['long'];
$point=$res['point'];
$date=$res['date'];
美元余额=0;
$sum=mysql\u查询(“选择sum(点)作为余额中的点,其中电子邮件=
“$”会话['SESS_ID']。””;
$sum\u res=mysql\u fetch\u数组($sum);
$sum=$sum_res['points'];
回声“;
回显“$date”;
回显“$lat”;
回音“$long”;
回音“$point”;
回音“$sum”;
回声“;
}
我相信这可以通过mysql的sum函数来实现。你能给我一些解决方案或建议吗。多谢各位 MySQL
sum
函数不会做你想做的事情——但它不一定要做——有一种更简单的方法可以使用你已经获取的结果来完成你的任务
因为您已经有了要操作的行的$点
,只需将其添加到计数器中,然后从那里继续操作即可。实际上,您每行都进行了多余的db调用
使用:
您可以完全删除以下行:
$sum = mysql_query( ... );
$sum_res = mysql_fetch_array($sum);
$sum = $sum_res['points'];
$total
将保存您描述的运行点计数,并且不会查询您的db every循环。以下是php:
$park_history = mysql_query("
SELECT *
FROM balance
WHERE email ='".$_SESSION['SESS_ID']."'");
$i = 0;
$balance = 0; // the first sum of balance will 0 + first point
while($res = mysql_fetch_array($park_history))
{
$i++;
$lat = $res['lat'];
$long = $res['long'];
$point = $res['point'];
$date = $res['date'];
$balance= $balance + $point; // balance will be updated in every loops
echo "<tr>";
echo "<td class='tdhead2' valign='top'>$date</td>";
echo "<td class='tdhead2' valign='top'>$lat</td>";
echo "<td class='tdhead2' valign='top'>$long</td>";
echo "<td class='tdhead2' valign='top'>$point</td>";
echo "<td class='tdhead2' valign='top'>$balance</td>";
echo "</tr>";
}
并重新定义$park_history
:
$park_history = mysql_query("
SELECT *
FROM balance
WHERE email ='".$_SESSION['SESS_ID']."'");
看看吧!如果发现一些错误,请告诉我(评论)。。这可能会有帮助:D在第一行中,它的平衡是0,但如何平衡?@samitha因为在db中,点是0,所以平衡是0,然后点是2,所以平衡是0+2=2,依此类推。你现在有什么问题吗?不是每行都显示正确的平衡。哦,我曾经做过这样的程序。请稍等D
$sum = mysql_query("SELECT SUM(point) AS points FROM balance WHERE email =
'".$_SESSION['SESS_ID']."'");
$sum_res = mysql_fetch_array($sum);
$sum = $sum_res['points'];
$park_history = mysql_query("
SELECT *
FROM balance
WHERE email ='".$_SESSION['SESS_ID']."'");