当数据已经存在时,我想知道如何防止插入数据库。以及如何使用一条消息来制作一个单击窗口,该消息使用户插入的数据已经在数据库内。
我如何从视图中获得输入有点像这样:
<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">
将数据从数据库中获取到选择标签中。我的数据库具有员工ID,员工名称,部门代码和作业。
这是我的控制器:
public function insertdata() {
$this->model->setdata();
$data['results'] = $this->model->emp_all();
$this->load->view('edit_view', $data);
}
它将数据插入数据库,并将用户重定向到视图。
最后,这是我在模型中插入数据库的方式:
public function setData(){
$f1 = $_POST['empid'];
$f2 = $_POST['empname'];
$f3 = $_POST['deptcode'];
$f4 = $_POST['assignment'];
$this->db->query("INSERT INTO employeeDB VALUES('$f1', '$f2', '$f3', '$f4')");
}
捕获是,用户应该无法分配员工ID,并在同一部门的重复作业中命名。
任何答复,评论和洞察力都将不胜感激。预先感谢!
您可以使用INSERT IGNORE INTO
查询。如果数据已经存在,它不会在表中插入记录。
请在这里看。希望这会有所帮助。
您可以使用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);
}
}
在SQL Server使用中,可以使用NotExist来保护插入