仅当今天的日期大于数据库中的日期时才更新记录

时间:2015-10-01 11:10:59

标签: php codeigniter

我在数据库中的记录如下所示:

RES_ID | RES_CHECK_IN  | RES_CHECK_OUT
----------------------------------------
  1685 |   08/10/2015  | 12/10/2015
  1684 |   24/10/2015  | 28/10/2015
  1683 |   20/09/2015  | 22/09/2015
   105 |   03/04/2015  | 06/04/2015

我想仅更新RES ID 105,因为今天的日期(01/10/2015)CHECK OUT DATE of RES ID 105更大。我试过这样做:

型号:

function update_columns_lock($res_id)
{
   $data = array('IS_COLUMNS_LOCKED_AFTER_CHECKOUT' => 1);
   $this->db->where('RES_ID' ,$res_id);
   $this->db->update('reservations',$data);
}

执行:

$today = time();
if ($today > strtotime($row->RES_CHECK_OUT)) {

    $ci = &get_instance();
    $ci->Reservations_model->update_columns_unlock($row->RES_ID);
}

这似乎只是随机更新预订..没有我想要的逻辑。我在这里想念什么?

3 个答案:

答案 0 :(得分:0)

我认为这与您的日期格式有关。以下代码应该可以帮助您创建一个strtotime理解的格式。

$tmp_convert_time = date_create_from_format("d/m/Y",$row->RES_CHECK_OUT);

if ($today > strtotime(date_format($tmp_convert_time, 'd/m/Y'))) {
   <CODE HERE>
}

答案 1 :(得分:0)

请尝试以下代码:

if (strtotime(date()) > strtotime($row->RES_CHECK_OUT)) {
    $ci = &get_instance();
    $ci->Reservations_model->update_columns_unlock($row->RES_ID);
}

答案 2 :(得分:0)

我的解决方案:

function lock_columns_after_checkout()
{
    $custom_sql_command = 'UPDATE reservations SET IS_COLUMNS_LOCKED_AFTER_CHECKOUT = 1 WHERE DATE(RES_CHECK_OUT) < DATE(NOW())';
    $this->db->query($custom_sql_command);
}