Php 循环使用更新日期的SQL insert语句

Php 循环使用更新日期的SQL insert语句,php,sql,loops,Php,Sql,Loops,我需要做的是运行“将相同的内容插入数据库”,只更改日期 i、 e 所以我需要运行这个循环一年、一个月或两年,并将其添加到数据库中,但日期需要每天更改 我不知道如何制作一个脚本来实现这一点,因此任何帮助都将不胜感激 感谢您不要直接插入日期,您可以使用now(),假设这是您要插入的当前日期。以下内容将插入当前日期,而不是预设日期。这假设您正在使用MySQL INSERT INTO bs_events ( eventDate, eventTime, title, spa

我需要做的是运行“将相同的内容插入数据库”,只更改日期

i、 e

所以我需要运行这个循环一年、一个月或两年,并将其添加到数据库中,但日期需要每天更改

我不知道如何制作一个脚本来实现这一点,因此任何帮助都将不胜感激


感谢您不要直接插入日期,您可以使用
now()
,假设这是您要插入的当前日期。

以下内容将插入当前日期,而不是预设日期。这假设您正在使用MySQL

INSERT INTO bs_events
(
    eventDate,
    eventTime,
    title,
    spaces,
    description,
    entryFee,
    payment_required,
    max_qty,
    allow_multiple
) 
VALUES (
    DATE_FORMAT(CURDATE(),'%Y-%m-%d %H:%i:%s'),
    '10:00',
    'Carpet Cleaner 3000',
    '4',
    'This is rad',
    '25.99',
    '1',
    '1',
    '2'
);

从今天开始,您可以使用以下方法创建一个存储过程,以循环和插入任意数量的存储过程:

DELIMITER //
CREATE PROCEDURE loopInsert()

BEGIN
    DECLARE a INT DEFAULT 0;
    myloop: LOOP
        INSERT INTO bs_events
(
    eventDate,
    eventTime,
    title,
    spaces,
    description,
    entryFee,
    payment_required,
    max_qty,
    allow_multiple
) 
VALUES (
    DATE_FORMAT(DATE_ADD(CURDATE(), INTERVAL a DAY),'%Y-%m-%d %H:%i:%s'),
    '10:00',
    'Carpet Cleaner 3000',
    '4',
    'This is rad',
    '25.99',
    '1',
    '1',
    '2'
);
        SET a = a + 1;
        IF a = 6 THEN
            LEAVE myloop;
        END IF;
    END LOOP myloop;
END//
DELIMITER ;
然后你可以:

CALL loopInsert();

它将插入从今天开始的
a
天。该示例将插入6天。

下面是一个示例。它在一个查询中完成所有操作

$row = array(
    '2011-03-02 00:00:00',
    '10:00',
    'Carpet Cleaner 3000',
    '4',
    'This is rad',
    '25.99',
    '1',
    '1',
    '2'
);

$rows = array();
$end = new DateTime('2012-01-01');
for($date = new DateTime($row[0]); $date < $end; $date->modify('+1 day')) {
    $row[0] = $date->format('Y-m-d H:i:s');
    $rows[] = sprintf("('%s')", implode("','", $row));
}

$query = 'INSERT INTO bs_events
(
    eventDate,
    eventTime,
    title,
    spaces,
    description,
    entryFee,
    payment_required,
    max_qty,
    allow_multiple
) VALUES '.implode(',', $rows);
$row=array(
'2011-03-02 00:00:00',
'10:00',
“地毯清洁剂3000”,
'4',
“这是拉德”,
'25.99',
'1',
'1',
'2'
);
$rows=array();
$end=新日期时间('2012-01-01');
对于($date=new DateTime($row[0]);$date<$end;$date->modify(“+1天”)){
$row[0]=$date->format('Y-m-dh:i:s');
$rows[]=sprintf(“%s”),内爆(“,”,$row));
}
$query='插入到bs_事件中
(
事件日期,
活动时间,
标题
空间,
描述
入场费,
需要付款,
最大数量,
允许多个
)值“.”内爆(“,”,$rows);

注意:这是因为行数据是已知的。。。如果您接受用户输入,请确保您正在检查SQL注入。

您使用的是什么DBMS?我使用的是cpanel,因为我不太确定如何使用mysql安装Oracle?然后在MySQL中使用NOW()函数,这意味着我必须每天运行此脚本?是的,但我认为您正在这样做?如果您使用的是windows,您也可以使用计划TAK每天运行脚本。最简单的方法是创建一个快捷方式并每天执行。这意味着你的电脑需要一直打开。我认为更好的选择是使用cron,因为它将在服务器上运行。默认情况下,大多数基于unix的主机都安装了cron。我相信我希望它将相同的内容添加到数据库中,但我希望在下一年或下一个月每次添加内容时,日期都增加一天。如果每次循环都将日期增加一天,我将如何循环它?您可以创建一个存储过程来循环并插入尽可能多的内容想从今天开始使用这个:我尝试了这个,但我得到了错误:解析错误:语法错误,在第4行的/home/fevsdiet/public_html/diycarpetcare.co.uk/booking/loop2.php中出现意外的T_字符串上述代码不是php。是MySQL。你可以在MySQL CLI上运行这个程序。啊,我想我有点糊涂了。我正在运行cpanel,正在尝试运行它,或者通过一个php脚本运行它。我如何运行这个脚本?我正在使用mysql
$row = array(
    '2011-03-02 00:00:00',
    '10:00',
    'Carpet Cleaner 3000',
    '4',
    'This is rad',
    '25.99',
    '1',
    '1',
    '2'
);

$rows = array();
$end = new DateTime('2012-01-01');
for($date = new DateTime($row[0]); $date < $end; $date->modify('+1 day')) {
    $row[0] = $date->format('Y-m-d H:i:s');
    $rows[] = sprintf("('%s')", implode("','", $row));
}

$query = 'INSERT INTO bs_events
(
    eventDate,
    eventTime,
    title,
    spaces,
    description,
    entryFee,
    payment_required,
    max_qty,
    allow_multiple
) VALUES '.implode(',', $rows);