【问题标题】: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


    【解决方案1】:

    解决方案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 验证 解决方案3:您可以发布值并检查具有特定列和值的行数是否大于1然后它是重复的

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

    【讨论】:

      【解决方案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();
            }
        }
        

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 2014-03-16
          • 1970-01-01
          • 2013-02-26
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2017-08-14
          相关资源
          最近更新 更多