这是我根据日期向表中插入新行的函数。如果行已经存在,我想避免重复。此函数基本上将 2014 年 11 月作为 mwf_month 插入,因此 mwf_student_id 和 mwf_month 对对于该行是唯一的。我应该做哪些修改才能避免这种重复?
public function month_wise_due($grade_due, $new_due, $id, $remaining) {
$now1 = time();
$now = date('F, Y', $now1);
$store = array(
'mwf_month' => $now,
'mwf_previous' => $remaining,
'mwf_due' => $grade_due,
'total_due' => $new_due,
'mwf_student_id' => $id,
'mwf_pay_day' => 'Not Yet Paid',
'mwf_payment' => 0,
'mwf_diff' => $new_due
);
$this->db->trans_start();
$this->db->insert('mwf', $store);
$this->db->trans_complete();
}
最佳答案
正确的方法是通过在两个字段“mwf_month+mwf_student_id”上添加“唯一键”来更新您的数据库表。执行此操作的 SQL 命令是:
ALTER TABLE `mwf` ADD UNIQUE `unique_month_student`(mwf_month,mwf_student_id);
然后,可能的口是心非将以您可以捕获的 SQL 错误结束。您还可以使用“忽略”语句抑制异常或使用“替换”方法而不是“插入”。
如果您对表没有所需的权限,则需要在插入新记录之前通过单独的 sql 调用简单地检查该对是否存在。
关于php - 根据日期向表中插入行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26695785/