使用for循环+1个月来更新日期的PHP代码

时间:2015-03-18 16:28:42

标签: php mysql pdo

input data from form like below.

receipt      =  700
coupon       =  501,502,503,504,505,506
coupondate   =  28-02-2015

我的表中的数据如下

我需要根据收据更新优惠券和优惠券....

receipt    coupon  coupondate
 700        501    27-03-2015
 700        502    27-04-2015
 700        503    27-05-2015
 700        504    27-06-2015
 700        505    27-07-2015
 700        506    27-08-2015

但是在更新代码运行之后,这产生如下的输出....

receipt    coupon  coupondate
 700        501     27-03-2015
 700        501     27-03-2015
 700        501     27-03-2015
 700        501     27-03-2015
 700        501     27-03-2015
 700        501     27-03-2015

MY for循环在更新代码中不起作用... plz有助于生成正确的输出......

下面是我的更新代码....

但插入查询中的相同代码运行良好...但是更新它会在所有行中生成相同的输出.....

plz help ..

 if(isset ($_GET['edit']))
 {
    $receipt_no = $_GET['edit'];
    $coupon = $_POST['coupon'];                     
    $arr = explode(",", $coupon);
    $min = min($arr);
    $max = max($arr);   
    $startingdate = date("d-m-Y", strtotime($_POST['startingdate']));

    for ($i = 1 ; $i <= count($arr) ; $i++)  
    {
        $count = 1;
        for ($j = $min; $j <= $max; $j++)
        {

            $coupondate = date("d-m-Y", 
                               strtotime(date("d-m-Y", 
                                 strtotime($startingdate)) . 
                                 " +" . $count . " month - 1days"));
            $count++;                   
            $updaterow = $database->updateRow(
                         "UPDATE receipt_entry 
                          SET 
                          coupondate=:coupondate,
                          coupon=:coupon,
                          startingdate=:startingdate 
                          WHERE receipt_no = :receipt_no",
                                array(':coupondate'=>$coupondate,
                                      ':coupon'=>$j,
                                      ':startingdate'=>$startingdate,
                                      ':startingdate'=>$startingdate,
                                      ':receipt_no'=>$receipt_no
                                     )
                          );        
        }   

    }
}

1 个答案:

答案 0 :(得分:0)

您的SQL查询显示WHERE receipt_no = :receipt_no因此它始终会在具有该receipt_no的所有行中放入相同的数据。您需要准确指定应更新哪一行。

顺便说一下,你有2个嵌套的for循环,而你只需要1个循环。