NepenTheS adlı üyeden alıntı: mesajı görüntüle
Bunun sebebi sizin kodlamada yaptığınız mantık hatasıdır. Yukarıda paylaştığınız kodda if bloklarını ard arda kullanmışınız fakat if koşulu içerisinde belirttiğiniz olay gerçekleşse bile, yani kullanıcı varsa bile elseif kullanmadığınız dan dolayı bir sonra ki if blokuna geçiş yapıyor. Onda da yine sağlansa bile, herhangi bir else durumu olmadığından veritabanına kayıtı her şekilde yapıyor.

Şu şekilde sorun olamaması gerek.

function register($name,$username,$email,$password) { 
        $this->db->where('username',$username); 
        if ($this->db->count_all_results('users') > 0) { 
            return 'e1'; //Kullanıcı adı kullanımda 
        } 
       $this->db->where('email',$email);
        else if ($this->db->count_all_results('users') > 0) { 
              
            return 'e2'; //Email kullanımda 
        }else { 
        $password=md5($password); 
        $this->data=array( 
                          'username' => $username, 
                          'email' => $email, 
                          'password' => $password, 
                          'name' => $name 
        ); 
        $this->db->insert('users',$this->data); //Kayıt Yapıldı 
        return 'ok'; 
       }
    }
Burada şunu yaptık, ilk önce kullanıcı adının var olup olmadığını kontrol ettik eğer kullanıcı adı alınmış ise, if else bloku oluşturduğumuzdan dolayı direk if koşulu sağlandığında diğerlerini görmeden fonksiyonu sonlandırır. Eğer ki hiç bir if koşulu sağlanmıyorsa direk else blokuna geçerek, orada ki işlemi yapar.
Hocam kodu deneyeceğim ama ben mantık hatası göremiyorum en baştaki if te kullanıcı adı varsa return ile fonksiyon duruyor zaten eğer yoksa ikinci if bloğu kontrol ediliyor onda varsa fonksiyon yine return ile durduruluyor,return dan sonra kod calısmaya devam edemezki niye ikinci if bloğuna veya kayıt işlemine geçsin ?