Çözüldü PHP "fatal error" hatası

Bu konu çözüldü olarak işaretlenmiştir. Çözülmediğini düşünüyorsanız konuyu rapor edebilirsiniz.

hoopperr

Hectopat
Katılım
7 Temmuz 2019
Mesajlar
94
Merhaba, ben yazılıma yeni başladım bu sebeple aldığım bir iki hatada yardımcı olursanız sevinirim. Ben kendi e-pin sitemi yaptım tema hazır her şey çok güzel oldu ama login sistemini yapmaya çalışırken bir hata alıyorum. Hatayı veren kod ve hata şöyle:

Hata: fatal error: Uncaught mysqli_sql_exception: Duplicate entry " for key 'kullanici_adi'in C:\xampp\htdocs\giris.php:18 stack trace: #0 C:\xampp\htdocs\giris.php(18): mysqli_query(object(mysqli), 'ınsert ınto kul...') #1 {main} thrown in C:\xampp\htdocs\giris.php on line 18

Kod: $ekle="ınsert ınto kullanicilar (kullanici_adi, email, parola) values ('$name', '$email', '$password')";
$Calistirekle = mysqli_query($baglanti,$ekle);


Login sistemini denediğimde database ye her şey kayıt oluyor iyi hoş fakat sayfayı yenilediğimde yukarıdaki hatayı alıyorum. Data ya yazdırmak için verdiğim kullanici_adi, email, parola hepsi doğru hepsini kontrol ettim, nasıl düzeltebilirim bunu? Birde mesela hata mesajlarını yazdım ama etki etmiyor işlemiyor sayfaya.
Hatta şöyle kodların resmini de bırakyım daha detaylı olmuş olur:
 

Dosya Ekleri

  • giris.png
    giris.png
    122,7 KB · Görüntüleme: 271
Son düzenleme:
Çözüm
Bu seferde index.php den giriş e tıkladığımda şu hatayı veriyor:

Warning: Undefined array key "kullaniciadi" in C:\xampp\htdocs\login\giris.php on line 27

Warning
: Undefined array key "email" in C:\xampp\htdocs\login\giris.php on line 28

Warning
: Undefined array key "parola" in C:\xampp\htdocs\login\giris.php on line 29

Warning
: Undefined variable $baglanti in C:\xampp\htdocs\login\giris.php on line 32

Fatal error
: Uncaught TypeError: mysqli_query(): Argument #1 ($mysql) must be of type mysqli, null given in C:\xampp\htdocs\login\giris.php:32 Stack trace: #0 C:\xampp\htdocs\login\giris.php(32): mysqli_query(NULL, 'INSERT INTO kul...') #1 {main} thrown in C:\xampp\htdocs\login\giris.php on line 32
MySQL bağlantı sorununu hala çözmemişsiniz, önce onu çözmelisiniz. baglanti.php'yi içe aktardığınızdan emin olun. Önceki mesajda da söylediğim gibi mysqli_query'ye bağlantının yapıldığı değişkenin parametresini verin şu şekilde: mysqli_query($baglanti, $ekle);
Veri tabanı stünunu kontrol eder misiniz? kullanici_adi olan sütunu.

Ek olarak kodları kod bloğu olarak atar mısınız? Son olarak veri tabanı yapı ekranını ekran fotoğrafı atar mısınız?
 
PHP:
<?php
include("baglanti.php");
$username_err="";
if(isset($_POST["kayit"])){
    if(empty($_POST["kullaniciadi"]))
    {
        $username_err="Kullanıcı adı boş geçilemez";
    }
    else if(strlen($_POST["kullaniciadi"])<5){
        $username_err="kullanıcı adı en az 5 harf olmalıdır! ";
    }
    $name=$_POST["kullaniciadi"];
    $email=$_POST["email"];
    $password=password_hash($_POST["parola"],PASSWORD_DEFAULT);
    $ekle="INSERT INTO kullanicilar (kullanici_adi, email, parola) VALUES ('$name', '$email', '$password')";
    $calistirekle = mysqli_query($baglanti, $ekle);
    if($calistirekle) {
        echo '<p><font color="white">Kayıt işleminiz başarıyla gerçekleşti!</font></p>' ;
    }
    else{
        echo '<p><font color="white">Kaydınız oluşturulurken bir hata meydana geldi!</font></p>';
    }
}
?>

HTML:
<div class="container" id="container">
    <div class="form-container sign-up-container">
        <form action="giris.php" method="POST">
            <h1>Hesap Oluştur</h1>
            <input type="text" placeholder="Kullanıcı Adı" name="kullaniciadi" />
            <?php
            echo $username_err;
            ?>
            <input type="email" placeholder="Email" name="email"/>
            <input type="password" placeholder="Şifre" name="parola"/>
           
            <button type="submit" name="kayit">Kayıt Ol</button>
        </form>
    </div>
    <div class="form-container sign-in-container">
        <form action="giris.php">
            <h1>Giriş Yap</h1>
            <input type="email" placeholder="Email" />
            <input type="password" placeholder="Şifre" />
            <a href="#">Şifreni mi Unuttun?</a>
            <button>Giriş Yap</button>
        </form>
    </div>
    <div class="overlay-container">
        <div class="overlay">
            <div class="overlay-panel overlay-left">
                <h1>Merhaba Oyuncu!</h1>
                <p></p>
                <button class="ghost" id="signIn">Giriş Yap</button>
            </div>
            <div class="overlay-panel overlay-right">
                <h1>Merhaba Oyuncu</h1>
                <p></p>
                <button class="ghost" id="signUp">Kayıt Ol</button>
            </div>
        </div>
    </div>
</div>

Öncelikle karşılama türünü utf8_general_ci yapar mısınız? Sonra tekrar deneyiniz.
Yine aynı "kullanıcı adı boş bırakılamaz" gibi şeyler ekledim kullanıcı adını boş bırakınca bu hatayı veriyor.Sayfayı yenileyip kullanıcı adını giriyorum yine aynı hata . Gittim veritabanı bağlantısını PDO ya çevirdim yine aynı.
 
kullanici_adi sütunu benzersiz yapmışsınız. Boş veri var zaten tablo üzerinde. O boş kullanıcı adı olan veriyi silince sorun çözülmesi lazım.
 

Technopat Haberler

Yeni konular

Geri
Yukarı