为什么这个查询会产生看似随机的结果?

时间:2013-10-11 18:09:23

标签: php mysql sql database

这对我来说没有任何意义,但是这个查询显示了一些记录,有些是部分记录,有些记录是单行记录。看似没有节奏或理由。更糟糕的是,当我在MySql中运行查询时,它可以正常工作,完全没有任何问题。目前我认为它是一个恶魔和/或超级恶魔。

$sql =  "SELECT phonenumber,date,dataplan AS currentplan, SUM(datamb) AS value_sum FROM maindata2 WHERE email='".($_POST['email'])."' GROUP BY phonenumber,date";

$result = mysql_query($sql);

$row = mysql_fetch_assoc($result);

$query = mysql_query($sql) or die(mysql_error());

$header_printed = false;

while($row = mysql_fetch_array($query)) {
    if ($row['phonenumber']) {
        if ($header_printed === false) {

            echo "   
            <table id='display'>
            <tr>
            <th>Phone Number:</th>
            <th>Data Plan:</th>
            <th>Data Usage This Period:</th>
            <th>Remaining:</th>
            <th>Date Reporting:</th>
            </tr>";

            $header_printed = true;
        }
    }
} 

while ($row = mysql_fetch_assoc($result)){
    echo "<tr>";
    echo "<td>".$row['phonenumber'] . "</td> ";
    echo "<td>".$row['currentplan'] . "MB</td> ";
    echo "<td>".ROUND ($row["value_sum"],2) . "MB</td> ";
    echo "<td>".($row['currentplan'] - ROUND ($row["value_sum"],2)) . "MB</td>";
    echo "<td>".$row['date'] . "</td></tr>";
}
echo "</table>";

任何想法都会比我现在更多!

2 个答案:

答案 0 :(得分:0)

只是注意到循环内部导致了多个表的创建,这可能是一个原因,另一个注意事项,为什么你要进行两次相同的查询,这对db引擎来说是无用的?最后一点,永远不要在查询中直接使用用户输入而不进行清理。

答案 1 :(得分:0)

您的问题似乎是您正在运行两次相同的查询。在这一行:

$row = mysql_fetch_assoc($result);

您获取结果集的第一个结果行,但实际上根本没有对它执行任何操作。

您也可以混合使用$query$result

在遍历结果集之前,您可能需要输出表头。然后遍历结果集一次,输出每一行。