使用php以所需格式显示数据

时间:2019-05-28 10:37:29

标签: php html mysql

我正在尝试获取此输出

Province 
 1.city 1 33poits
 2.city 2 33poits
 3.city 3 33poits

以及我当前的输出是

Province 
 1.city 1 33points
Province 
 2.city 2 33points
Province 
 3.city 3 33points

请在这里帮助一个新手,以下是我的php代码

<?php
$sql = "SELECT * FROM ccty WHERE ID=".$ID;
$results = $mysqli->query($sql);

if ($results->num_rows > 0) {
    while ($row = $results->fetch_object()) {
    ?>  
    <table>  
        <tr><?= $row->PID; ?>
            <td><?= $row->SPID; ?><?= $row->points; ?></td>
        </tr>
    <?php 
    }
} else {
    echo "No record available!";
}
?>  

1 个答案:

答案 0 :(得分:3)

对于一个,您的表结构无效。

要每组仅打印一次PID,请将先前的PID存储在变量中并进行检查-仅在其与以前不同的情况下才打印。

您还应该使用准备好的语句,而不是直接查询。

<?php 
$sql = "SELECT PID, SPID, points FROM ccty WHERE ID=? ORDER BY PID";
$stmt = $mysqli->prepare($sql);
$stmt->bind_param("s", $ID);
$stmt->execute();
$stmt->bind_result($PID, $SPID, $points);
if ($stmt->num_rows) {
    echo '<table>';

    $previousPID = null;
    while ($stmt->fetch()) {
        if ($PID != $previousPID) {
            echo '<tr><td>'.$PID.'</td></tr>';
            $previousPID = $PID;
        }
        ?>  
        <tr>
            <td><?= $SPID." ".$points; ?></td>
        </tr>
        <?php 
    }
    echo '</table>';
} else {
   echo "No records available!";
}