sql >> Databáze >  >> RDS >> Mysql

Codeigniter mi nedovolí aktualizovat záznam, protože některá pole musí být jedinečná

použijte funkci ověření zpětného volání

$this->form_validation->set_rules('email', 'Email', 'required|valid_email|callback_check_user_email');

function check_user_email($email) {        
    if($this->input->post('id'))
        $id = $this->input->post('id');
    else
        $id = '';
    $result = $this->user_model->check_unique_user_email($id, $email);
    if($result == 0)
        $response = true;
    else {
        $this->form_validation->set_message('check_user_email', 'Email must be unique');
        $response = false;
    }
    return $response;
}

v modelu

    function check_unique_user_email($id = '', $email) {
        $this->db->where('email', $email);
        if($id) {
            $this->db->where_not_in('id', $id);
        }
        return $this->db->get('user')->num_rows();
    }

použijte totéž pro uživatelské jméno....



  1. Doctrine 2 SUM() ekvivalentní pomocník?

  2. Podmínka IF MySQL

  3. Časové razítko PHP/MySQL bude vypadat atraktivněji

  4. Získejte název zdrojové tabulky řádku při dotazu na nadřazený řádek, od kterého dědí