[英]Add a row for each date in year with php pdo
我需要为我的数据添加365/366行,以便为某年(etc.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行,但仅用于更改基准(日期)
最好的方法是什么?
尝试这个
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
添加另一个参数:
$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,
));
如果愿意,您可以使用一个查询来完成。 然后,您需要执行以下操作:
$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));
您可以按照以下说明在MySQL中使用WHILE
: http : //dev.mysql.com/doc/refman/5.7/en/while.html
DECLARE v INT DEFAULT 365;
WHILE v > 0 DO
... insert to ...
SET v = v - 1;
END WHILE;
您也可以在手册中找到所需的日期处理功能: http : //dev.mysql.com/doc/refman/5.7/en/date-and-time-functions.html
您需要的是: MAKEDATE(year, dayofyear)
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.