Вставить или обновить условие в Codeigniter - PullRequest
0 голосов
/ 07 марта 2020

У меня есть две таблицы (tb_account & tb_reg), и у них есть отношение, основанное на user_id. user_id на tb_account уже существует, когда пользователь регистрирует учетную запись.

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

, пользователь должен заполнить несколько форм в tb_reg в зависимости от user_id и его успеха. Но когда он хочет обновить формы во второй раз, условие не работает. У меня есть такая ошибка Duplicate entry '23' for key 'user_id'.

вот моя модель:

<code><pre>
$pen = [
            'tpt_lahir' => $post['tpt_lahir'],
            'tgl_lahir' => $post['tgl_lahir'],
            'agama' => $post['agama']
        ];

    $user_id=$this->session->userdata('userid');
    //user_id in this session is from tb_account
    $sql = "SELECT * FROM tb_reg WHERE user_id = '".$user_id."'";
    $query = $this->db->query($sql);
    if($query != $user_id) {
        $this->db->set('user_id', $user_id);
        $this->db->insert('tb_reg', $pen); 
    } else {
        $this->db->where('user_id', $user_id);
        $this->db->update('tb_reg', $pen);
    }

Конечно, проблема в условии (if else ) но я не могу это исправить. Кто-нибудь? Заранее спасибо.

1 Ответ

0 голосов
/ 07 марта 2020

Вы забыли вызвать функцию num_rows () , ваш код должен быть таким

$sql = "SELECT * FROM tb_reg WHERE user_id = '".$user_id."'";
$query = $this->db->query($sql);
if($query->num_rows() == '0' ) {
    $this->db->set('user_id', $user_id);
    $this->db->insert('tb_reg', $pen); 
} else {
    $this->db->where('user_id', $user_id);
    $this->db->update('tb_reg', $pen);
}

Надеюсь, это поможет

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