【问题标题】:Check duplicate entry before inserting to database to avoid showing database duplicate error - Codeigniter在插入数据库之前检查重复条目以避免显示数据库重复错误 - Codeigniter
【发布时间】:2018-12-07 08:08:22
【问题描述】:
我使用 get_uid() 函数从表组织成员中调用一个 uid。现在我想在插入之前检查这个 uid 是否在表签名中没有重复项。 (sigantures.uid = organizationsmember.uid)所以如果没有重复,我会将其插入签名数据库$this->db->insert('signatures', $data);,如果它有重复我想将它重定向到另一个页面(可能是错误页面),我不会'不希望出现数据库重复错误。我是 codeigniter 的新手,希望能得到一些帮助。
【问题讨论】:
标签:
codeigniter
codeigniter-3
【解决方案2】:
我个人在我的模型中编写了一个方法来检查是否有重复的条目,并在调用该方法之前调用该方法以将数据添加到数据库中。
例如
class MyModel extends CI_Model
{
public function isInDatabase($data)
{
// Run a SELECT query with $data to search if there is a record with that $data
if($data_exists)
return true;
else
return false;
}
public function insertInDatabase($data)
{
// Run an INSERT query with $data
}
}
然后在我的控制器中,我在添加 $data 之前检查重复条目
class MyController extends CI_Controller
{
public function add()
{
$data = // Some code to retrive data from user input
if($this->mymodel->isInDatabase($data))
$this->mymodel->insertInDatabase($data)
else
// Do nothing or show an error page.
}
}
【解决方案3】:
在您的控制器中,您可以使用内置的 Codeigniter 表单验证库来检查该值是否存在于数据库中。
public function save_data {
$this->load->library('form_validation');
$this->form_validation->set_rules('uid', 'UID', 'is_unique[table.column]');
if ($this->form_validation->run() == FALSE) {
echo validation_errors();
}
else {
$this->model->insert_to_database();
}
}