Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/245.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_Sql_Date - Fatal编程技术网

Php 仅在一周内运行SQL查询

Php 仅在一周内运行SQL查询,php,sql,date,Php,Sql,Date,我知道如何根据日期对数据库运行SQL查询,但如何让服务器只在特定时间或特定日期运行该查询 我有一个包含活动的SQL数据库(编辑:这些活动将作为数字标牌显示在监视器上,因此无需任何用户输入)。有些活动在每个工作日进行,有些仅在特定的一天进行。我将每天的活动设置为具有相同的日期(1900-01-01),目前我有一个SQL查询始终显示这些条目,还有一个查询仅显示当前日期的条目: <tbody> <?php require_once('../include

我知道如何根据日期对数据库运行SQL查询,但如何让服务器只在特定时间或特定日期运行该查询

我有一个包含活动的SQL数据库(编辑:这些活动将作为数字标牌显示在监视器上,因此无需任何用户输入)。有些活动在每个工作日进行,有些仅在特定的一天进行。我将每天的活动设置为具有相同的日期(1900-01-01),目前我有一个SQL查询始终显示这些条目,还有一个查询仅显示当前日期的条目:

<tbody>
   <?php
            require_once('../include/dbconn.php');
            $result = $conn->prepare("SELECT * FROM daily WHERE Date_For='1900-01-01' ORDER BY id ASC");
            $result->execute();
            for($i=0; $row = $result->fetch(); $i++){


    ?>
            <tr>
                    <td><label><center><?php echo $row['Child']; ?></center></label></td>
                    <td><label><center><?php echo $row['Activity']; ?></center></label></td>

            </tr>
            <?php } ?>





    <?php
            require_once('../include/dbconn.php');
            $result = $conn->prepare("SELECT * FROM daily WHERE DATE(Date_For) = CURDATE() ORDER BY id ASC");
            $result->execute();
            for($i=0; $row = $result->fetch(); $i++){

    ?>
            <tr>
                    <td><label><center><?php echo $row['Child']; ?></center></label></td>
                    <td><label><center><?php echo $row['Activity']; ?></center></label></td>

            </tr>
            <?php } ?>
    </tbody>


您可以将两个查询合并为一个查询,以提高效率,还可以在
WHERE
子句中添加额外的部分,以确保查询在周末运行时不会显示“每个工作日”事件:

SELECT 
  * 
FROM 
  daily 
WHERE 
  (
    Date_For='1900-01-01' 
    AND DAYOFWEEK(CURDATE()) <> 1 
    AND DAYOFWEEK(CURDATE()) <> 7
  ) 
  OR Date_For = CURDATE() 
ORDER BY 
  id ASC
选择
* 
从…起
每日的
哪里
(
日期_='1900-01-01'
和DAYOFWEEK(CURDATE())1
和星期一(CURDATE())7
) 
或Date_For=CURDATE()
订购人
身份证

(假设SQL中的区域性设置表示星期天是第1天,星期六是第7天。如果不需要,请调整数字。)

如果只希望某些代码在特定时间运行,则a)检测代码执行的当前日期,并决定是否继续,或者b)通过Cron作业或计划任务来控制代码何时执行。但我认为,需求仍然有点不清楚?是否希望这样,如果某个活动发生在今天的日期,则该活动将仅从查询中返回?(如果是这样,为什么人们不能搜索明天发生的事情呢?)或者你根本不想在某些日子运行查询?不幸的是,你的措辞有点混乱。对不起,我错过了它将用于数字看板,所以人们无法搜索。回答的第一部分“在代码执行时检测当前日期,并决定是否继续”基本上就是我要问的。然后,如果您在某处有一个要运行(或不运行,如果愿意的话)的日期列表(例如,一周中的几天或一个月中的几天,无论计划需要什么),您可以比较当前日期是否与其中任何一天匹配。这有帮助吗?周末的好处是,我忘了你的“每天”活动只在工作日进行<代码>选择*从每天,其中(Date_For='1900-01-01'和DAYOFWEEK(CURDATE())1和DAYOFWEEK(CURDATE())7)或Date_For=CURDATE(),按id ASC排序。(假设SQL中的区域性设置表示星期天是第1天,星期六是第7天。如果不是,请调整数字。现在,如果今天是星期六或星期天,则不会从查询中返回“每天”活动。比在PHP中检测日期更简单、更整洁(略)。