使用带有for循环的单个查询在数据库中插入多个数据

时间:2014-08-16 14:11:13

标签: php mysql sql

如何在我的$dateentry中每个月将多个数据插入数据库我有6个日期。我需要将它们存储到具有相同ID的数据库中。

mysql_query("INSERT INTO testtable (ID, MonthEntries) VALUES('1','$dateentry')")
    or die(mysql_error()); 

$dateentry = 2010-01-01, 2010-02-01, 2010-03-01, 2010-04-01, 2010-05-01, 2010-06-01,

结构 ID = INT MonthEntries = DATE

对于$ dateentry中的每个日期,我需要为每个日期插入相同的ID。 示例数据表输出在我的数据库表中。

-------------------
ID | MonthEntries |
01 | 2010-01-01   |
01 | 2010-02-01   |
01 | 2010-03-01   |
01 | 2010-04-01   |
01 | 2010-05-01   |
01 | 2011-06-01   |
-------------------

我认为我需要在sql查询中使用for循环,但我有点迷失,我不知道如何构建它。

1 个答案:

答案 0 :(得分:0)

就像@Wrikken在评论中所说,你需要在应用程序级别进行循环。条目数据应首先存储在您可以循环的数组中。类似的东西:

$id = 1;
$entries = array( '2010-01-01', 
                  '2010-02-01', 
                  '2010-03-01', 
                  '2010-04-01', 
                  '2010-05-01', 
                  '2010-06-01');

foreach($entries as $entry) {

mysql_query("INSERT INTO testtable (ID, MonthEntries) VALUES($id,'{$entry}')")
    or die(mysql_error());

}

注意:我没有检查你的SQL是否有效。

根据评论中的代码段修改代码块:

$date = '2010-01-01';
    $end_date = '2010-06-01';

    $dateentry = array();
    $id = 1; // required by your MySQL insert statement

    // populate $dateentry array with dates
    while (strtotime($date) <= strtotime($end_date)) {
        $dateentry[] =  date("Y-m-d", strtotime($date));
        $date = date ("Y-m-d", strtotime("+1 month", strtotime($date)));
    } // end while

    // loop through $dateentry and insert each date into database
    foreach($dateentry as $entry) {

        mysql_query("INSERT INTO testtable 
            (ID, MonthEntries)  VALUES($id,'{$entry}')")
            or die(mysql_error());

    } // end foreach

同样,我还没有检查你的MySQL语句是否有错误