如何第一次插入第二次更新

ohtdti5x  于 2021-06-15  发布在  Mysql
关注(0)|答案(2)|浏览(767)

如果是一天中的第一个条目,我想插入行,否则我想更新行..我怎么做..目前我已经完成了更新,不知道如何进行插入..请帮助我实现这一点。。
这是我的控制器代码:

$startdate = $this->input->post('TDate');
$date = str_replace('/', '-', $startdate);
$newDate = date("Y-m-d", strtotime($date));
$data1 = array(
        'tdate'=>$newDate,
        'total_credit'=>$total_credit['amount'],
        'total_debit'=>$total_debit['amount'],
       );
$this->db->where('tdate',$newDate);
$this->db->update('daytot',$data1);
oxiaedzo

oxiaedzo1#

您可能认为可以接受的解决问题的一个方法是始终在事务数据出现时插入它。也就是说,第一条记录和随后的每一条记录都将作为单独的insert进入数据库。然后,如果您需要做任何报告,例如按小时或按天,您只需点击事务表并进行汇总即可。
您试图解决的问题,即在一天开始时有条件地执行插入,是很麻烦的,因为除了您已经指出的问题外,您可能还需要担心应用程序中的多个节点同时尝试执行此操作。

0kjbasz6

0kjbasz62#

试试下面一个

$newDate   = date("Y-m-d", strtotime($this->input->post('TDate')));
$data1     = array(
    'tdate'        => $newDate,
    'total_credit' => $total_credit['amount'],
    'total_debit'  => $total_debit['amount'],
);

//Check record is exist for the request date
$objQuery = $this->db->get_where('daytot', array('tdate' => $newDate));
if ($objQuery->num_rows() > 0) { //UPDATE
    $this->db->where('tdate', $newDate);
    $this->db->update('daytot', $data1);
}
else { //INSERT
    $this->db->insert('daytot', $data1);
}

希望这能奏效:)

相关问题