Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/59.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 多少sql查询太多?_Php_Mysql_Sql - Fatal编程技术网

Php 多少sql查询太多?

Php 多少sql查询太多?,php,mysql,sql,Php,Mysql,Sql,多少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);

多少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">';
$sql=(“选择*日期,其中dates.FROM=”“$date.”);
$result=mysql\u查询($sql);
$rows=mysql\u num\u rows($result);
如果($rows>=1)
{
$row=mysql\u fetch\u数组($result);
如果($rows==2)
$calendar.='';
其他的
{
如果($row['from']==$date)
$calendar.='';
elseif($row['to']==$date)
$calendar.='';
其他的
$calendar.='';
}
}
其他的
$calendar.='';

对于什么太多,没有明确的答案,因为有太多的参数,例如有多少用户,您的数据库在哪种硬件上,等等

如果您的问题是“这对最终用户来说会不会太慢?”那么您应该分析代码,并查看其执行情况

要回答您关于是否每次分配$rows的问题,是否有查询,答案是“是”-您将在每次获得$rows时运行SQL查询


主观上,我认为这是低效的。如果这是我的代码,我会重写它,让SQL获得整个月份(例如,相应地设置日期范围),然后用PHP处理返回的数据,循环处理数据并一次处理整个月份。我可能会在返回的数据上循环一次,构建一个围绕日期键入的数组,然后将其一起内爆。

代码的效率没有问题,我只看到数据库上的一个查询。我遗漏了什么吗?@MikeBrant OP说他们在一个循环中有那个代码。循环没有显示。我们不能很好地回答这个问题,那么我们可以吗。实际上,问题可以归结为:与需要使用28-31个查询相比,您能在一个查询中获得所有数据吗。与其查看查询后发生的所有代码,不如查看循环和表中数据的相关信息。似乎您可以轻松地将代码简化为只发送一个查询并处理php代码本身中的日期,但是,没有足够的信息来确定你是否可以采取这种方法。也。