-2

多少 SQL 查询太多了?我有以下一段代码,它在一个循环中,根据所选月份在 28-31 次之间循环。它用于根据数据库中的日期更改 css 类。每次调用 $rows 变量时,它会重新运行查询吗?这段代码有效吗?

$sql = ("SELECT * FROM dates WHERE dates.from<='".$date."' AND dates.to>='".$date."'");
$result = mysql_query($sql);
$rows = mysql_num_rows($result);
if ($rows >= 1)
{
    $row = mysql_fetch_array($result);

    if ($rows == 2)
        $calendar .= '<td class="calendar-day-booked">';
    else
    {
        if ($row['from'] == $date)
            $calendar .= '<td class="calendar-day-from">';
        elseif ($row['to'] == $date)
            $calendar .= '<td class="calendar-day-to">';
        else        
            $calendar .= '<td class="calendar-day-booked">';
    }
}
else
    $calendar.= '<td class="calendar-day">';
4

1 回答 1

9

什么太多没有明确的答案,因为有太多的参数,例如有多少用户,你的数据库在什么样的硬件上,等等。

如果您的问题是“这对最终用户来说会不会太慢?” 那么你应该分析代码,看看它是如何执行的。

要回答关于是否每次分配 $rows 时是否有查询的问题,答案是肯定的 - 每次获得 $rows 时都会运行 SQL 查询。

主观上,我会说这是低效的。如果这是我的代码,我会重写它,以便 SQL 获取整个月份(例如相应地设置日期范围),然后在 PHP 中处理返回的数据,循环遍历数据并一次处理所有月份。我可能会遍历返回的数据一次,构建一个以日期为键的数组,然后将它们全部内爆。

于 2012-12-14T22:07:16.350 回答