Проверьте дублирующуюся запись перед вставкой в ​​базу данных, чтобы не показывать ошибку дублирования базы данных - Codeigniter - PullRequest
0 голосов
/ 07 декабря 2018

Я вызываю uid из таблицы organizmember с помощью функции get_uid ().Теперь я хочу проверить, не содержит ли этот идентификатор дубликат в сигнатурах таблицы, прежде чем вставлять его.(sigantures.uid = organizmember.uid) Поэтому, если дубликата нет, я вставлю его в базу данных сигнатур $this->db->insert('signatures', $data);, а если он будет дублирован, я хочу перенаправить его на другую страницу (возможно, страницу с ошибкой).не хочу, чтобы ошибка дублирования базы данных отображалась.Я новичок в codeigniter и был бы признателен за помощь.

Ответы [ 3 ]

0 голосов
/ 07 декабря 2018

Я лично кодирую метод в моей модели, чтобы проверить, есть ли дублирующаяся запись, и вызываю этот метод непосредственно перед вызовом метода для добавления данных в базу данных.

Например

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.
  }
}
0 голосов
/ 16 декабря 2018

В вашем контроллере вы можете использовать встроенную библиотеку Codeigniter Form Validation, чтобы проверить, существует ли значение в базе данных.

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();
    }
}
0 голосов
/ 07 декабря 2018

Решение 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: также вы можете использовать проверку jjery ajax в поле ввода Показать имя пользователя уже выходит Решение3: вы можете опубликовать значение и проверить, если число строк с определенным столбцом и значением больше 1, то это дубликат

Я бы посоветовал вам следовать решению 2. Я могу предоставить вам код, если хотите.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...