简化并加快每月每天查询数据库的过程

时间:2014-02-13 02:34:15

标签: php mysqli

我觉得这不是获取和显示这些信息的最有效方式,但我似乎无法在任何地方找到直接适用于我所做的事情的答案。这样做。我需要查询数据库中每个月的每一天并显示该信息。即使没有数据,我也需要在每月的每一天显示。

我知道如何执行此操作的唯一方法是每天查询数据库。我知道查询数据库经常会减慢页面加载时间。我应该获取整个月的数据并搜索数组吗?

我正在做的基本想法:

// DATES OF MONTH ARE IN AN ARRAY CALLED $dates
foreach($dates as $key => $date){
    $getdata = mysqli_query($link, "SELECT * FROM `Data` WHERE section = $section AND type = $typeid AND `date` = $datecomp");
    $info = mysqli_fetch_assoc($getcatdata);
    if(isset($info)){
        // Display info
    }
    else {
        // Display empty div
    }
}

1 个答案:

答案 0 :(得分:1)

运行查询,该查询将返回数据范围内的所有记录。

然后在PHP中滚动浏览日期和每个日期,检查数据库查询结果中是否有任何记录。

如果是 - 显示它们 如果不是 - 显示空div

没有太多细节,PHP就是这样:

$getdata = mysqli_query($link, "SELECT * FROM `Data` WHERE section = $section AND type = $typeid AND `date` BETWEEN $startDate AND $endDate");
$info = mysqli_fetch_assoc($getcatdata);
$dbData = Array(); // this will be an assoc array with dates as keys
foreach($info as $row) {
    $dbData[$row["date"]] = $row;
}

$unixStartDate = strtotime($startDate);
$unixEndDate = strToTime($endDate);
for($i=$unixStartDate; $i<=$unixEndDate; $i=$i+60*60*24) {
    if(array_key_exists(date('Y-m-d', $i), $dbData)){
    // Display info of $dbData[date('Y-m-d', $i)]
    }
    else {
    // Display empty div
    }
}

注意:如果您的日期字段格式不是yyyy-mm-dd,则代码可能略有不同。

因此,作为摘要 - 您有一个数据库查询。它会更快。