我有一个以递归方式更新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 }
编辑:包含两个连接功能。