PHP date()看起来导致读错时区

时间:2014-10-26 14:01:03

标签: php mysql date datetime

我有一个以递归方式更新MySQL数据库中的datetime的函数。

if($_POST['action'] == 'check orders in') {
     //check the value for match
     if($_POST['checkin_orders'] && is_array($_POST['checkin_orders'])) {
         foreach($_POST['checkin_orders'] as $oid){
             $db->update_order($oid, array('orderfulfilled_ts'=>date('Y-m-d H:i:s')));
             send_order_sent_email($oid);
         }
     }
     jsoo_redirect("/admin/orb-check-in");
}

将我的php.ini设置为正确的时区,但是,当运行多个值(正在检入多个订单)运行时,第一个订单获取正确的时区,而第二个订单获取服务器时区。

我是否有更好的方法来应对这种情况?

P.S。我在foreach循环中尝试了date_defult_timezone_set而没有解决方案。

在我的db.php文件中,以下是连接到更新顺序的两个函数:

update_order

 1522     function update_order($id, $args) {
 1523         return $this->update_row(REGION_PREFIX."Order", $id, $args);
 1524     }

update_row

  901     function update_row($table, $id, $values) {
  902         $this->assert_connected();
  903         $this->assert_table_exists($table);
  904         if (!isset($id)) die ("update_row expects \$id to be set");
  905         if (!is_array($values)) die ("update_row expects \$values to be an associative array");
  906         if (count($values)==0) return STATUS_NOCHANGE;
  907 
  908         $sql = "UPDATE `$table` SET ";
  909 
  910         $i=0;
  911         foreach($this->table_fields[$table] as $field=>$type) {
  912             if (isset($values[$field]) && $this->is_db_field($table,$field)){
  913                 if ($i!=0) $sql .= ",";
  914                 $sql .= "`$field` = '". $this->sanitize_field($table, $field, $values[$field]) ."'";
  915                 $i++;
  916             }
  917         }
  918 
  919         $sql .= " WHERE `id` = $id;";
  920 //      echo $sql;
  921         if ($this->conn->query($sql)) return $id;
  922         else return STATUS_FAILURE;
  923     }

编辑:包含两个连接功能。

0 个答案:

没有答案