PHP Mysql查询获取特定日期范围内所有星期一的时间范围并将这些不同的开始和结束时间放入数据库中

标签 php mysql date for-loop

我有一个挑战,我希望所有特定日期(例如星期一)的所有开始和结束时期都在特定日期范围内,并将它们放在单独的行中 该表如下所示:

+----+---------+------------+------------+
| id | id_room | start_ts   | end_ts     |
| 3  | 3       | 1445032800 | 1445378400 |
| 4  | 3       | 1445551200 | 1446073200 |
| 5  | 3       | 1446246000 | 1446591600 |
| 6  | 3       | 1446850800 | 1447196400 |
| 7  | 3       | 1447455600 | 1447801200 |
| 8  | 3       | 1448060400 | 1448406000 |
| 9  | 2       | 1445475600 | 1445572800 |
| 10 | 1       | 1445378400 | 1445464800 |
| 11 | 3       | 1445032800 | 1445378400 |
+----+---------+------------+------------+

我设法通过几种不同的方式获得开始和结束时期:

$start = strtotime('2016-06-01');
$end = strtotime('2016-06-30');

$mondays_start=array();

while( $start <= $end  ) {
  if ( date('N',$start)== 1 )   
    $mondays_start[]=$start+43200;

  $start += 86400; 
}

$start = strtotime('2016-06-01');
$end = strtotime('2016-06-30');
$mondays_end=array();

while( $start <= $end  ) {
  if ( date('N',$start)== 1 )   
    $mondays_end[]=$start+64800;

  $start += 86400; 

}

但当我试图将它们放入我的 table 时,我真正的问题就出现了。我想我可以将数组分解成不同的变量,并根据它进行单独的查询,但它似乎不是很有效。

我在这里尝试了一些解决方案 Is it bad to put a MySQL query in a PHP loop?但无法让它工作。

我也像这样在for循环中试过

$start = strtotime('2016-06-01');
$end = strtotime('2016-06-30');
for ($start; $start < $end; $start+604800) {
$mondays .= "INSERT INTO `#__room_closure`(`id_room`,`start_ts`,`end_ts`) VALUES( ".
        $args['id_room'].",".$start.",".$start+21600.");";
}

但这也不起作用。

期待您对此事的看法。

最佳答案

我创建了一种回答问题的方法,但它创建了一个新方法。

答案如下:

for ($args["start_ts"]; $args["start_ts"] < $args["end_ts"]; $args["start_ts"]+=604800) {
$mondays .= "INSERT INTO `#__room_closure`(`id_room`,`start_ts`,`end_ts`) VALUES( ".
        $args['id_room'].",".$args["start_ts"].",".($args["start_ts"]+21600).");";
};

这将创建一个数组,其中包含字符串中的多个不同查询:

"INSERT INTO `#__room_closure`(`id_room`,`start_ts`,`end_ts`) VALUES( 1,1306900800,1306922400);INSERT INTO `#__room_closure`(`id_room`,`start_ts`,`end_ts`) VALUES( 1,1307505600,1307527200);INSERT INTO `#__room_closure`(`id_room`,`start_ts`,`end_ts`) VALUES( 1,1308110400,1308132000);INSERT INTO `#__room_closure`(`id_room`,`start_ts`,`end_ts`) VALUES( 1,1308715200,1308736800);INSERT INTO `#__room_closure`(`id_room`,`start_ts`,`end_ts`) VALUES( 1,1309320000,1309341600);" 

这解决了我的问题。

然而,对于 joomla,我不能在 Query() 函数中放置多个查询。但那是另一回事了,应该下次再讲。

关于PHP Mysql查询获取特定日期范围内所有星期一的时间范围并将这些不同的开始和结束时间放入数据库中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33231707/

相关文章:

javascript - 使用 Javascript 日期,获取 0 或以上 31

javascript - 使用 pikaday datepicker 设置日期范围

php - 在管理面板中显示前端的运输方式?

php - 发现 PHP mySQL 语法错误

php - 两个正则表达式的交集

java - 在其他日期选择器中选择日期时如何禁用日期选择器中的日期

php - 为部分订单开具发票;总数未更新

php - Laravel - Larabook 教程 :Users. Codeception 确实看到了新记录

c# - 我的静态 DAL 中的 MySQL 线程问题

java - java.sql.DriverManager.getConnection 突然出现 "license checkout failed"