使用Codeigniter存在数据时停止插入数据库

时间:2017-08-31 05:59:39

标签: php mysql database codeigniter

我想知道当数据已经存在于数据库中时如何防止插入数据库。以及如何创建一个onclick窗口,其中包含一条消息,提醒用户他们正在插入的数据已经在数据库中。

我如何从我的观点获得输入有点像这样:

@keyframes cf3FadeInOutTopLoader {
    0% {
        opacity:1;
        visibility: visible;
    }
    45% {
        opacity:1;
        visibility: visible;
    }
    55% {
        opacity:0;
        visibility: hidden;
    }
    100% {
        opacity:0;
        visibility: hidden;
    }
}
@keyframes cf3FadeInOutBottomLoader {
    0% {
        opacity:0;
        visibility: hidden;
    }
    45% {
        opacity:0;
        visibility: hidden;
    }
    55% {
        opacity:1;
        visibility: visible;
    }
    100% {
        opacity:1;
        visibility: visible;
    }
}

img.top {
    animation-name: cf3FadeInOutTopLoader;
    animation-timing-function: ease-in-out;
    animation-iteration-count: 1;
    animation-duration: 2s;
    animation-direction: alternate;
  visibility:hidden;

}
#overlay-page img.bottom {
    animation-name: cf3FadeInOutBottomLoader;
    animation-timing-function: ease-in-out;
    animation-iteration-count: 1;
    animation-duration: 2s;
    animation-direction: alternate;

}
#overlay-page img{
    position: absolute;
    left: 0px;
    right: 0px;
    margin: 0 auto;
  width:200px;
}

它将数据库中的数据导入select标记。我的数据库有员工ID,员工姓名,部门代码和分配。

这是我的控制器:

<form method="post" action="<?php echo base_url();?>index.php/Controller/insertdata">    
    <h3>Select Course Code:</h3>
    <select id="employeeid" name="empid">
        <option value="" selected="selected">---Select Course Code---</option>
        <?php foreach ($e_id as $row4): ?>
        <option label="<?php echo $row4['EmpID']; ?>" value="<?php echo $row4['EmpID']; ?>" <?php echo set_select('course', $row4['EmpID'], False); ?>> <?php echo $row4['EmpID'] ; ?> </option>
        <?php endforeach; ?>
    </select>
    <input type="Submit" value="Submit" id="submite_id">  

它将数据插入数据库并将用户重定向到视图。

最后,我将如何在模型中将其插入数据库:

public function insertdata() {
    $this->model->setdata();
    $data['results'] = $this->model->emp_all();
    $this->load->view('edit_view', $data);
}

问题在于,用户不应该为同一部门分配员工ID,并命名为重复的作业。

任何回复,评论和见解将不胜感激。提前谢谢!

3 个答案:

答案 0 :(得分:0)

您可以使用INSERT IGNORE INTO查询。如果数据已经存在,它将不会在表中插入记录。

请看Original FK Constraint after table copy no new FK Constraint。 希望这会有所帮助。

答案 1 :(得分:0)

您可以使用Codeingiter form_validation库。

$this->load->library('form_validation');
$this->form_validation->set_rules('empid', 'Employee ID', 'required|trim|employeeDB.empid');

最后一个参数employeeDB.empid用作table_name.column_name。所以您的控制器将如下所示。

public function insertdata() {

    $this->load->library('form_validation');
    $this->form_validation->set_rules('empid', 'Employee ID', 'required|trim|employeeDB.empid');

    if ($this->form_validation->run() == FALSE) {
        // Form Validation Failed. 
        $this->load->view('myform');
    } else {
        // Form Validation Passed. 
        $this->model->setData();
        $data['results'] = $this->model->emp_all();
        $this->load->view('edit_view', $data);
    }        
}

答案 2 :(得分:0)

在sql server中使用可以使用NOTEXIST保护重复插入