gpt4 book ai didi

php - 没有结果的 Mysql 查询的 Echo 0

转载 作者:行者123 更新时间:2023-11-29 03:40:48 26 4
gpt4 key购买 nike

我正在构建一个数组,其中包含过去 30 天运行列表中来自 mysql 数据库的特定客户端的调用次数。到目前为止,我使用的代码用于添加调用数组的日期,但我需要为没有调用的日期(数据库中没有条目)显示“0”。到目前为止,这是我的代码:

$query="SELECT COUNT(*) FROM my_db WHERE client_phone='clint_phone#' GROUP BY calldate"; 
$result = mysql_query($query);
$data = array();
while ($row = mysql_fetch_row($result)) {
$data[] = $row[0];
}

我只需要一种方法来显示今天我有 30 个电话而昨天我有 0 个电话,我需要它来显示 [30,0]。我所拥有的只会显示 [30]。

编辑 * 我有一个 mysql 数据库将列 client_phone,calldate。我希望使用数组中的数据构建图形。图中的每个点都代表一天以及该客户当天的调用次数。我正在构建上面的查询来填充该数组。我正在尝试倒数三十天并将每天的总调用数输入数组。

编辑 2* 我已经快搞定了。我在“foreach”区域遇到问题。下面是带有两个 print_r() 的转储数组的代码。第一个看起来不错,但第二个显示一些数组条目被覆盖,这是不应该的:

$query="SELECT calldate, COUNT(*) FROM my_db WHERE client_phone='phone#' and calldate>='20130101' AND calldate<='20130107' GROUP BY calldate ORDER BY calldate"; 
$result = mysql_query($query);
$data = array();
while ($row = mysql_fetch_array($result)) {
$data[$row['calldate']] = $row[1];
}

$startDate = '20130101';
$endDate = '20130107';
$dates = array();

for($current = $startDate; $current != $endDate; $current = date('Ymd', strtotime("$current +1 day"))) {
$dates[] = $current;
}
$dates[] = $endDate;

print_r ($data);
echo "<br />";

foreach($dates as $date){
if (in_array($date, $data)) {
// that date was found in your db_date array(therefore had queries)
}else{
$data[$date] = 0; //date was not found in your db_array so we set that date with no queries to zero
}
}

print_r ($data);

我在浏览器中运行并得到:

Array ( [20130101] => 1 [20130104] => 6 [20130105] => 2 [20130106] => 1 [20130107] => 3 ) 
Array ( [20130101] => 0 [20130104] => 0 [20130105] => 0 [20130106] => 0 [20130107] => 0 [20130102] => 0 [20130103] => 0 )

顶部输出看起来不错,只是缺少分配给不在 data[] 数组中的日期的零。第二个数组的缺失日期为零,但其他不应该被覆盖的日期。

感谢您的帮助!

最佳答案

查找该时间跨度内的每个日期并为此执行任务并不是真正的解决方案标准。但是取决于您的主机是否允许 cron-tasks;如果您能够使用 cron 任务在该日期的晚上 11:59 自动将 0 插入到您的数据库中(如果当天没有进行任何查询);您可以简单地提取所有日期。

如果你不想用 cron 任务来做,我想你可以这样管理......

      $startDate = '2009-01-28'; 
$endDate = '2009-02-04';
$dates = array();

for($current = $startDate; $current != $endDate; $current = date('Y-m-d', strtotime("$current +1 day"))) {
$dates[] = $current;

$dates[] = $endDate;
}

然后这样做

foreach($dates as $date){
if (array_key_exists($date, $data)) {
// that date was found in your db_date array(therefore had queries)
}else{
$data[$date] = 0; //date was not found in your db_array so we set that date with no queries to zero
}
}

这可能需要一些小的调整,因为我没有测试过;但这应该有效;如果不是很接近它应该。希望这会有所帮助。

关于php - 没有结果的 Mysql 查询的 Echo 0,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14207175/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com