【问题标题】:Inserting one week (seven sparate days) and some other data into database using a for loop and PDO使用 for 循环和 PDO 将一周(七天)和其他一些数据插入数据库
【发布时间】:2012-03-21 08:38:42
【问题描述】:

这是我的数据:

Day            From:     To:

Sunday         12PM      8PM

Monday         12PM      9PM

Tuesday        12PM      6PM

Wednesday      12PM      6PM

Thursday       12PM      6PM

Friday         12PM      5PM

Saturday       12PM      5PM

如何使用 for 循环通过 PHP 的 PDO 将上述数据(来自 $_POST)插入到我的 MySQL 数据库中?我的输入字段命名为 SundayTimeFrom、SundayTimeTo、MondayTimeFrom、MondayTimeTo 等。

我快速拼凑的伪代码:

$sql = 'Insert INTO tableName (day, from, to) Values (:day, :from, :to)';
for(i = Sunday; I < Saturday; i++) //what do I do here?
{
    $stmt = $this->_db->prepare($sql);
    $stmt->bindParam(":day", $i, PDO::PARAM_STR);
    $stmt->bindParam(":from", $_POST[$i + 'TimeFrom'], PDO::PARAM_STR);
    $stmt->bindParam(":to", $_POST[$i + 'TimeTo'], PDO::PARAM_STR);
}

【问题讨论】:

    标签: php mysql for-loop


    【解决方案1】:

    您可以循环 7 次并使用 date('l',time()+24hours in secs) 以字母形式获取您的日期。

    在这里查看日期('l')http://php.net/date

    但最好的办法是更改您的 $_POST 以获得类似 $_POST['days'][0][from] = '10PM';$_POST['days'][0][to] = '8PM'; 的内容

    如果我没记错的话,你可以写:&lt;input type="text" name="days[][from]" value="10PM" /&gt;

    或者干脆&lt;input type="text" name="days[Monday][from]" value="10PM" /&gt;&lt;input type="text" name="days[Monday][to]" value="8PM" /&gt;做一个foreach($_POST['days'] as $value)

    如您所见,您有很多解决方案:)

    【讨论】:

    • 哦,好吧。所以我把它变成一个数组,其中 days[] 将是 days[0](又名星期日)到 days[6](又名星期六)对吗?
    • 是的,你可以做到。我不知道你是如何在 html 端显示表单的,所以我帮不了你那么多。
    【解决方案2】:

    如果字段名称为 schedule[sunday][from]schedule[sunday][to] 而不是 SundayTimeFromSundayTimeTo,则可以使用类似的 foreach 循环

    $stmt = $this->_db->prepare($sql);
    $stmt->bindParam(":day", $day);
    $stmt->bindParam(":from", $from);
    $stmt->bindParam(":to", $to);
    
    foreach( $_POST['schedule'] as $day=>$span ) {
      someDataValidationHere($day, $span);
      $from = $span['from'];
      $to = $span['to'];
      $stmt->execute();
    }
    

    (未经测试)

    【讨论】:

      【解决方案3】:

      说你的数组是

      $schedule = array (sunday => array (from=>"12PM", to=> "8PM"),
                         monday => array (from=>"1PM", to=> "9PM"),
                          tuesday => array (from=>"2PM", to=> "10PM"),
                          wednesday => array (from=>"3PM", to=> "11PM"),
        );
      

      使用 _REQUEST["schedule"] 并保存在某个数组中,比如 $schedule。

      现在使用 foreach 将数组保存在数据库中。

        foreach ($schedule as $day=>$temp1) {
          foreach ($temp1 as $key=>$time) {
            if($key == "from")
              $from = $time;
            else if($key == "to")
              $to = $time;
          }
          $sth = $this->db->prepare("Insert INTO tableName (day, from, to) Values (:day, :from, :to)");
          $sth->execute(array(':day'=> $day, ':from'=> $from, ':to'=> $to));
        }
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2014-08-28
        • 1970-01-01
        • 2014-01-19
        • 1970-01-01
        • 2014-08-28
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多