我正在尝试通过表使用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);
?>
答案 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')
;
你肯定需要重构你的循环,因为你试图显示所有字段,好像它们来自一个