您好,我正在尝试做一个小游戏,我需要在此添加一些关于饮料外观和口味的要点。
将有7个人给出分数,因此在php中,我需要为每个日期创建一个表,并且只为每个玩家显示1个名称,但是我需要为每个具有相同名称的行添加分数:
到目前为止,这就是我所拥有的。
<?php
$pdo = Logbase::connect();
$pdo->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
$sql = 'SELECT DISTINCT start FROM grade';
$q = $pdo->query($sql);
$q->setFetchMode(PDO::FETCH_ASSOC);?>
<?php while ($r = $q->fetch()): ?>
<table class="blueTable" align="center">
<thead>
<tr>
<th> <?php echo $r['start'] ?></th>
<th></th>
</tr>
</thead>
<?php endwhile; ?>
<tbody>
<?php
$pdo = Logbase::connect();
$pdo->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
$sql = 'SELECT * FROM grade group by start, name';
$q = $pdo->query($sql);
$q->setFetchMode(PDO::FETCH_ASSOC);
?>
<?php while ($r = $q->fetch()): ?>
<tr>
<td> <?php echo $r['name'] ?></td>
<td> <?php echo $r['drinks_fla'] + $r['drinks_view'] + $r['food'] +
$r['sam'] ?></td>
</tr>
<?php endwhile; ?>
</tbody>
</table>
在我的结果中,我可以为每个玩家看到1个名称,但是仅添加了1行(第一行),因此我是否需要循环或mysql中的某些内容?
丹尼斯-------- 10分
迈克尔-------- 6分
我想看看
丹尼斯24分
米歇尔12分
id ---开始---名称----- drinks_fla --- drinks_view
1 --- 31.07-2017 ---丹尼斯--- 5 --- 5
1 --- 31.07-2017 ---丹尼斯--- 4 --- 3
1 --- 31.07-2017 ---丹尼斯--- 5 --- 2
2 --- 31.07-2017 ---米歇尔--- 5 --- 1
2 --- 31.07-2017 ---迈克尔--- 2 --- 4
最佳答案
$sql = 'SELECT * FROM grade group by start, name';
您已经将来自MySQL的结果进行了分组,因此对于组的属性将仅调用一行。
尝试使用“ sum()”来获取所需的选定列的总和:
$sql = 'SELECT name as name,sum(sum(drinks_fla),sum(drinks_view)) as sum FROM grade group by start, name';
MySQL将调用由第一个Property排序的所有行。具有相同第一个属性的所有行均与第二个属性进行排序。
例:
id---start--- name-----drinks_fla---drinks_view
1---31.07-2017---dennis---5---5
1---31.07-2017---dennis---4---3
1---31.07-2017---dennis---5---2
2---31.07-2017---Michale---5---1
2---31.07-2017---Michael---2---4
Result:
name----sum
dennis----24
Michale----6
Michael----6
关于php - 在php中从MySQL中的多行添加,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/45413803/