php - 根据日期向表中插入行

标签 php mysql codeigniter

这是我根据日期向表中插入新行的函数。如果行已经存在,我想避免重复。此函数基本上将 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/

相关文章:

php - 更新 pdo 中的两列

MySQL View 创建

php - 在 CodeIgniter 3 中重定向后 session 丢失

php - 认为我需要自助加入?

php - 添加从 $ 到 $.php 的重写后 nginx CSS 中断

mysql - JOIN 以奇怪的顺序完成;搞乱 ORDER BY?

php - 如何使用codeigniter更改mysql日期格式

CodeIgniter 优雅的排序、分页和过滤库

PHP MySQL 选择语句错误

PHP iconv_strlen 问题