【发布时间】:2022-11-20 23:54:54
【问题描述】:
我想根据日期显示表格中的所有数据。我将数据库中的数据存储在要显示的数组中。但是我收到错误警告:未定义的数组键。下面是我将数据存储在数组中的代码。
include("db.php");
if(isset($_GET['from_date']) && isset($_GET['to_date'])){
global $conn;
$from_date = $_GET['from_date'];
$to_date = $_GET['to_date'];
$stmt = $connection->prepare("
SELECT
date(datetime_entry_queue) AS Date,
duration_wait
FROM call_entry
WHERE status='abandonada'
AND date(datetime_entry_queue) BETWEEN '$from_date' AND '$to_date'
");
$stmt->execute();
$result = $stmt->get_result();
$Data = null;
while($row = $result->fetch_assoc()) {
if($row['duration_wait'] >= 0 AND ($row['duration_wait'] <= 30))
{
$Data[$row['Date']]['0-30'] += 1;
}
else if($row['duration_wait'] >= 31 AND ($row['duration_wait'] <= 60))
{
$Data[$row['Date']]['31-60'] += 1;
}
else if($row['duration_wait'] >= 61 AND ($row['duration_wait'] <= 120))
{
$Data[$row['Date']]['61-120'] += 1;
}
else
{
$Data[$row['Date']]['>120'] += 1;
}
}
echo "<pre>";
print_r($Data);
echo "</pre>";
$stmt->close();
}
这就是我返回页面表中数据的方式:
<?php
foreach($Data AS $Date => $Total)
{
?>
<tr>
<td><?php echo $Date;?></td>
<td><?php echo $Total["0-30"];?></td>
<td><?php echo $Total['31-60'];?></td>
<td><?php echo $Total['61-120'];?></td>
<td><?php echo $Total['>120'];?></td>
</tr>
<?php
}
?>
我已经运行了查询,它显示了我需要的所有数据。
如果我没有选择任何日期,这是输出
【问题讨论】:
-
你知道警告发生在哪一行吗?这将有助于我们帮助您 :)
-
当缺少数组元素时,您可以使用
??运算符。例如,改为写<?php echo ($Total["0-30"] ?? "None"));?>。如果未找到数组元素,这将返回“无”。我猜你的代码不会用所有可能的键填充 Data 数组...... -
@Gowire 谢谢你的回复我已经编辑了我的帖子,你可以看到输出
-
@Gowire 为什么当我已经在 if 语句中定义了键时找不到元素,为什么它不会填充数据数组?对不起,我还在学习数组,所以如果你能解释细节,我将不胜感激:)
标签: php mysql arrays html-table