php中的未定义索引通知[重复]

问题描述 投票:0回答:1

我试图通过表使用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);
        ?>
php mysql mysqli
1个回答
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');

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

© www.soinside.com 2019 - 2024. All rights reserved.