在codeigniter中使用php和mysql防止重复输入

时间:2017-02-16 08:33:29

标签: php mysql codeigniter activerecord

您好我在数据库中插入跟踪号码时遇到了问题。似乎在某些情况下它会生成重复的条目。我正在我的first_track表中的最后一个条目上生成跟踪号,并将其递增1.现在我的问题是,当用户同时点击时。它生成相同的跟踪号码。我该如何预防呢?顺便说一下这是我生成跟踪号码的代码。我还将每个月的第一个条目返回到0001。

<!----------Model-------->
            $this->db->order_by("first_trackid", "desc");
        $query = $this->db->get('first_track');
        if($query->num_rows() > 0)
        {
            $result = $query->result();
            if(date('m') != substr($result[0]->dtsno,2,2)){
                $dtsno = date('ym').'0001';                 
                }
            else{
                $dtsno = $result[0]->dtsno+1;
            }
            return  $dtsno;

        }
        else
        {
            return  $dtsno = date('ym').'0001';                 
        }
<!--- END model------->
<!---controller----------->
//call the model for generating dtsno
$firsttrack->dtsno = $this->user_information_model->dtsno();
//insert to table first_entry
$this->user_information_model->first_track($firsttrack);

1 个答案:

答案 0 :(得分:1)

首先,为了确保您不会在数据库中获得重复值,请确保将列(“first_trackid”)索引(将其设置为唯一),该列保存表first_track中的跟踪编号。

其次,当用户启动进程时,您将使用基于时间戳的临时跟踪序列号。

当用户完成整个过程或换句话说,保存记录时,应该实际生成跟踪号码。那时,生成该号码并相应地显示给用户。这样,您就可以确保在模式中永远不会重复这些值。

此致