php中未定义的索引通知

时间:2017-12-30 12:12:12

标签: php mysql mysqli

我正在尝试通过表使用Msqli多查询显示数据库信息以显示月份(作为月份名称,例如从2017/11/05到11月),呼叫计数(当月的呼叫数量)和总成本电话(月份)。这个月工作正常,但其他两个继续返回未定义的索引通知,我无法弄清楚我的错误。我的代码如下:

<?php
        $query = "SELECT DATE_FORMAT(`date_time`,'%M') AS date_time FROM calls;";
        $query .= "SELECT COUNT(*) FROM calls;";
        $query .= "SELECT SUM(cost) FROM calls;";

        if (mysqli_multi_query($conn,$query))
        {
            do{
                if ($result = mysqli_store_result($conn))
                {
                    while($row = mysqli_fetch_array($result))
                    {
                        echo '
                    <tr>
                        <td><a href=\"summary.php\">'.$row['date_time'].'</a></td>
                        <td>'. $row['COUNT(*)'] .'</td>
                        <td>'. $row['SUM(cost)'] .'</td>               
                    </tr>
                 ';
                        mysqli_free_result($result);
                    }
                }
            }while(mysqli_next_result($conn));
        }
        mysqli_close($conn);
        ?>

1 个答案:

答案 0 :(得分:0)

您要显示3个字段 - $row['date_time']$row['COUNT(*)']$row['SUM(cost)'] - 在3个不同的结果集中;他们永远不会成为同一阵列的一部分。

您可以通过多种方式修复代码:

  • 您可以将所有字段设为相同的别名,因此您只需迭代多个结果,但始终显示相同的索引

  • 如果您只从一张桌子中选择,则根本不需要多个查询。您需要的是SELECT DATE_FORMAT(`date_time`,'%M') AS date_time, COUNT(*), SUM(cost) FROM calls GROUP BY DATE_FORMAT(`date_time`,'%M');

你肯定需要重构你的循环,因为你试图显示所有字段,好像它们来自一个