Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/267.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

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/67.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 pdo为一年中的每个日期添加一行_Php_Mysql_Sql - Fatal编程技术网

使用php pdo为一年中的每个日期添加一行

使用php pdo为一年中的每个日期添加一行,php,mysql,sql,Php,Mysql,Sql,我需要为我的数据添加365/366行,以便在某一年的每个日期(等2014年) 我有: //something like for each date in this year add row with data... $STH1 = $db->prepare("INSERT INTO workhours (ID_radnika,ime,datum,user_id) values ($orderID,:1,HOW TO FOREACH DATE,:2)");

我需要为我的数据添加365/366行,以便在某一年的每个日期(等2014年)

我有:

//something like for each date in this year add row with data...
     $STH1 = $db->prepare("INSERT INTO workhours (ID_radnika,ime,datum,user_id) values ($orderID,:1,HOW TO FOREACH DATE,:2)");  
          $STH1->bindParam(':1', $_POST['ime']);
          $STH1->bindParam(':2', $user_id);

          $STH1->execute();
这是一个简单的问题。现在我需要为我知道的数据(ID_radnika、ime、user_ID)添加365行,但只更改数据(日期)

最好的方法是什么?

添加另一个参数:

$STH1 = $db->prepare("INSERT INTO workhours (ID_radnika,ime,datum,user_id) values ($orderID,:ime,:date,:uid)");
在参数更改的情况下执行:

    $max_days = ((((($year%4)==0)&&((($year%100)!=0)||(($year%400)==0))))?366:365);
    $startOfYear = strtotime(date('Y-01-01 0:00:00'));
    for ($i = 0; $i < $max_days; $i++) {
        $STH1->execute(array(
            ':ime' => $_POST['ime'],
            ':uid' => $user_id,
            ':date' => $startOfYear + $i*86400,
   ));
$max_days=((($year%4)=0)和($year%100)!=0)($year%400==0))?366:365);
$startOfYear=strottime(日期('Y-01-01 0:00:00');
对于($i=0;$i<$max_天;$i++){
$STH1->执行(数组)(
“:ime'=>$\u POST['ime'],
':uid'=>$user\u id,
“:日期”=>$startOfYear+$i*86400,
));
如果愿意,您可以通过单个查询完成。然后您需要执行以下操作:

$values      = array();
$startOfYear = strtotime(date('Y-01-01 0:00:00'));
$max_days = ((((($year%4)==0)&&((($year%100)!=0)||(($year%400)==0))))?366:365);
for ($i = 0; $i < $max_days; $i++) {
    $values[] = "($orderID, :ime, ".($startOfYear + $i * 86400).", :uid)";
}
$stm = $db->prepare("INSERT INTO workhours (ID_radnika,ime,datum,user_id) values ".implode(',', $values));
$stm->execute(array(':ime' => $_POST['ime'], ':uid' => $user_id));
$values=array();
$startOfYear=strottime(日期('Y-01-01 0:00:00');
$max_days=((($year%4)==0)和&($year%100)!=0)($year%400)==0))?366:365);
对于($i=0;$i<$max_天;$i++){
$values[]=“($orderID,:ime,”.($startOfYear+$i*86400)。“,:uid)”;
}
$stm=$db->prepare(“插入到工作时间(ID_radnika,ime,datum,user_ID)值中”)。内爆(',',$values));
$stm->execute(数组(':ime'=>$\u POST['ime'],':uid'=>$user\u id));

您可以在MySQL中使用
的同时使用
,如下所述:

您也可以在手册中找到所需的日期操作功能:

您需要的是:
MAKEDATE(year,dayofyear)
试试这个

CREATE PROCEDURE `sp_test`(IN id INT, In ime VARchar(20),In userid INT)
BEGIN
DECLARE start_date DATE default '2020-06-16';
DECLARE end_date DATE default '2021-06-16';
DECLARE DiffDate int default 1;
SELECT DATEDIFF(end_date,start_date) AS DiffDate
into DiffDate;
while DiffDate>0 do
  INSERT INTO workhours(ID_radnika,ime,datum,user_id)
  values (id,ime,start_date,userid);
    select  DATE_ADD(start_date, INTERVAL 1 DAY)
    into start_date;
    SELECT DATEDIFF(end_date,start_date) AS DiffDate
    into DiffDate;
end while;
END

但是这里的日期在哪里?所以在2014年1月1日至2014年12月31日的需要循环中,我为您提供了一种在MySQL中执行
foreach
的方法。将
INSERT
查询放在
…INSERT to…
@Andrew添加了日期函数的位置。如何添加日期函数,请完整填写answer@Andrew你有所有的材料来制作它。这个网站不是为了替你解决问题,而是给你一些提示和步骤,告诉你可以解决什么问题并从中学到什么。我想他想用MySQL来解决问题,你发布的解决方案也在浪费资源。但是日期在哪里?我需要从2014年1月1日到12月31日的循环。2014@Andrew我添加了日期,假设你保存timestamps@colburtonTforeach在MySQL中不是在PHP中,但它仍然在浪费资源。在SQL中可以做的事情最好是在SQL中而不是在PHP中做。在PHP中,可以使用日期('格式',秒);来获取任何您喜欢的日期格式。这是一个过程。您也可以在php@Andrew而且也是fast@AmitDubey不要尝试,他仍然需要php…;)
CREATE PROCEDURE `sp_test`(IN id INT, In ime VARchar(20),In userid INT)
BEGIN
DECLARE start_date DATE default '2020-06-16';
DECLARE end_date DATE default '2021-06-16';
DECLARE DiffDate int default 1;
SELECT DATEDIFF(end_date,start_date) AS DiffDate
into DiffDate;
while DiffDate>0 do
  INSERT INTO workhours(ID_radnika,ime,datum,user_id)
  values (id,ime,start_date,userid);
    select  DATE_ADD(start_date, INTERVAL 1 DAY)
    into start_date;
    SELECT DATEDIFF(end_date,start_date) AS DiffDate
    into DiffDate;
end while;
END