• 13-11-2017, 03:14:15
    #1
    <?PHP
    $ddel = time() + 60*60*24;
    $dadd = time();
    $db->Query("SELECT COUNT(*) FROM db_bonus_list2 WHERE user_id = '$usid' AND date_del > '$dadd'");
    $hide_form = false;
        if($db->FetchRow() == 0){
           # Bonus verilir
            if(isset($_POST["bonus"])){
                $sum = rand($bonus_min, $bonus_max);
                
                $db->Query("UPDATE db_users_b SET money_b = money_b + '$sum' WHERE id = '$usid'");
              
               # Bonuslar listesi
                $db->Query("INSERT INTO db_bonus_list2 (user, user_id, sum, date_add, date_del) VALUES ('$uname','$usid','$sum','$dadd','$ddel')");
                # Eski kayıtların silinmesi
                $db->Query("DELETE FROM db_bonus_list2 WHERE date_del < '$dadd'");
                echo "<center><font color = 'blue'><b>{$sum} Bonus Hesabına Yatırıldı</b></font></center><BR />";
                $hide_form = true;
            }
                
                if(!$hide_form){
    ?>
    yukarıda verdiğim kodlar ile bonus veriyorum oyuncuya önce düzgünce çalısırken birden şu hatayı almaya başladım " Duplicate entry '0' for key 'PRIMARY'" burada nasıl bir hata oluşmuş olabilir
  • 13-11-2017, 03:28:58
    #2
    "Duplicate entry '0' for key 'PRIMARY'" bu hatanın devamınıda yazarmısın index veya benzersiz tanımlanmış bir alana aynı girdiden yazmak istiyorsun gibi ama hatanın devamınıda yazarsan daha net bi çözüm bulabiliriz.
    Birde db_bonus_list2 tablosunu onar ve tekrar dene bakalım ne olacak.
    Kolay gelsin.
  • 13-11-2017, 03:33:08
    #3
    CoLLeR adlı üyeden alıntı: mesajı görüntüle
    "Duplicate entry '0' for key 'PRIMARY'" bu hatanın devamınıda yazarmısın index veya benzersiz tanımlanmış bir alana aynı girdiden yazmak istiyorsun gibi ama hatanın devamınıda yazarsan daha net bi çözüm bulabiliriz.
    Birde db_bonus_list2 tablosunu onar ve tekrar dene bakalım ne olacak.
    Kolay gelsin.

    hata sadece bukadar baska birşey yazmıyor ve onardım tabloyu birşey değişmedi
  • 13-11-2017, 03:37:13
    #4
    çok inceleme fırsatım olmadı lakin
    $db->Query("INSERT INTO db_bonus_list2 (user, user_id, sum, date_add, date_del) VALUES ('$uname','$usid','$sum','$dadd','$ddel')");
    her bonus alınırken insert into veriyorsunuz eğer ki user, user_id tablolarından birisi PRIMARY olarak tanımlı ise unique olmak zorundadır. yani aynı tabloda user, user_id tablolarından birisi primary ise aynı user ve ya user id bulunamaz.
    Eğer bunlardan birisi primary ise bir adet sadece id yada Unique_id ekleyin onu primary yapınve Auto incredemnt özelliğini açın sizde isnert ederken maneul müdahalede bulunmayın
    konuyu tam okuyamaıdm ama dublicate entry hatası sadece unique olması gereken primary bir area ya ikinci bir veri yazılmaya çalıştığında verir ve tek insert kodunuzda orası olduğuna göre insert variablelarınızdan birisi primary olmalı saygılar
  • 13-11-2017, 03:39:51
    #5
    mahirtaha adlı üyeden alıntı: mesajı görüntüle
    çok inceleme fırsatım olmadı lakin
    $db->Query("INSERT INTO db_bonus_list2 (user, user_id, sum, date_add, date_del) VALUES ('$uname','$usid','$sum','$dadd','$ddel')");
    her bonus alınırken insert into veriyorsunuz eğer ki user, user_id tablolarından birisi PRIMARY olarak tanımlı ise unique olmak zorundadır. yani aynı tabloda user, user_id tablolarından birisi primary ise aynı user ve ya user id bulunamaz.
    Eğer bunlardan birisi primary ise bir adet sadece id yada Unique_id ekleyin onu primary yapınve Auto incredemnt özelliğini açın sizde isnert ederken maneul müdahalede bulunmayın
    konuyu tam okuyamaıdm ama dublicate entry hatası sadece unique olması gereken primary bir area ya ikinci bir veri yazılmaya çalıştığında verir ve tek insert kodunuzda orası olduğuna göre insert variablelarınızdan birisi primary olmalı saygılar

    yapı içerisinde eylem olarak PRIMARY vardı onu index yapınca düzeldi ama bu bir hata veya açığa nedne olur mu ?
  • 13-11-2017, 03:42:58
    #6
    şuan eğer bir sutun primary değil ise olur ilerde. bu yüzden yapıya bir adet yeni eleman ekleyin adını unique_id yapın ve INT türünde olsun sadece Auto incredement özelliğini açın bitti. başka bir yerde yada kodlarınızda değişiklik yapmanız gerekmez.
  • 13-11-2017, 03:46:42
    #7
    mehmet0715 adlı üyeden alıntı: mesajı görüntüle
    hata sadece bukadar baska birşey yazmıyor ve onardım tabloyu birşey değişmedi
    Aşağıdaki satırların yerini değiştirerek denermisin.
    Birde db_users_b tablosunuda onarmayı denermisin.
    Bu zamana kadar bu hatayı almayıp şimdi alman ilginç olmuş ne kadar süredir kullanıyorsun.
    $db->Query("DELETE FROM db_bonus_list2 WHERE date_del < '$dadd'");
     
    $db->Query("INSERT INTO db_bonus_list2 (user, user_id, sum, date_add, date_del) VALUES ('$uname','$usid','$sum','$dadd','$ddel')");
  • 13-11-2017, 03:55:46
    #8
    mahirtaha adlı üyeden alıntı: mesajı görüntüle
    şuan eğer bir sutun primary değil ise olur ilerde. bu yüzden yapıya bir adet yeni eleman ekleyin adını unique_id yapın ve INT türünde olsun sadece Auto incredement özelliğini açın bitti. başka bir yerde yada kodlarınızda değişiklik yapmanız gerekmez.
    CoLLeR adlı üyeden alıntı: mesajı görüntüle
    Aşağıdaki satırların yerini değiştirerek denermisin.
    Birde db_users_b tablosunuda onarmayı denermisin.
    Bu zamana kadar bu hatayı almayıp şimdi alman ilginç olmuş ne kadar süredir kullanıyorsun.
    $db->Query("DELETE FROM db_bonus_list2 WHERE date_del < '$dadd'");
    $db->Query("INSERT INTO db_bonus_list2 (user, user_id, sum, date_add, date_del) VALUES ('$uname','$usid','$sum','$dadd','$ddel')");
    ikinizin dediğinide yaptım olmadı bende yapıyo komple baştan kurdum aynı şekilde çalıştı