插入数据库之前检查重复项,以避免显示数据库重复错误-Codeigniter

时间:2018-12-07 08:08:23

标签: codeigniter codeigniter-3

我使用get_uid()函数从表organizationalmember中调用了一个uid。现在,我想在插入之前检查此uid是否在表签名中没有重复项。 (sigantures.uid = Organizationalmember.uid)因此,如果没有重复项,我会将其插入到签名数据库BaseValidator中,如果有重复项,我想将其重定向到另一个页面(可能是错误页面),我不想显示数据库重复错误。我是Codeigniter的新手,希望能获得一些帮助。

3 个答案:

答案 0 :(得分:0)

解决方案1:您可以使用表单验证库,它不会让您重复值https://www.codeigniter.com/userguide3/libraries/form_validation.html?highlight=validation

$this->form_validation->set_rules('email', 'Email', 'required|valid_email|is_unique[users.email]');

解决方案2:您也可以在字段上使用jquery ajax验证输入show username已经退出 解决方案3:您可以发布该值,并检查具有特定列和值的行数是否大于1,然后进行重复

我建议您遵循解决方案2,如果您愿意,我可以为您提供代码。

答案 1 :(得分:0)

我亲自在模型中编写一个方法,以检查是否存在重复的条目,并在调用该方法将数据添加到数据库之前立即调用该方法。

例如

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.
  }
}

答案 2 :(得分:0)

在控制器中,您可以使用内置的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();
    }
}