您好,我正在尝试做一个小游戏,我需要在此添加一些关于饮料外观和口味的要点。

将有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/

10-13 03:36