PHP / MySQL yinelenen satır girmesini önleyen

4 Cevap php

nasıl php mysql yinelenen kayıtların giriş engellerim? masaya yerleştirmeden önce giriş doğrulama.

Ben şu anda benim web sitesi için bir kullanıcı kaydı bölümünü inşa ancak yinelenen bir kullanıcı adı veya e-posta adresi veritabanında bulunan eğer bir hata ile onları sunmak istiyorum duyuyorum.

herhangi bir fikir duyacağız ... teşekkürler!

4 Cevap

Takmadan önce, gibi bir SQL deyimi bir şey çalıştırmak

SELECT * FROM users WHERE users.name = :name OR users.email = :email

(parametrized SQL kullanarak) ve satır sayısını saymak döndü.

0'dan fazla varsa, bir yinelenen var.

OMG Midilli de veritabanı ile bir hata yapmanızı önlemek için çok iyi bir fikir olduğunu, bu iki alan, üzerindeki kısıtlamaları önerdi. Ancak, çoğaltılmış eklerseniz, bütün bu kısıtlama size ya da ayrıştırmak için denemek istiyorum olmayabilir veritabanı hata mesajı alacak.

Kullanıcı adı ve e-posta sütunlar için benzersiz kısıtlamaları tanımlayın:

ALTER TABLE your_table ADD CONSTRAINT uk_username UNIQUE (username)
ALTER TABLE your_table ADD CONSTRAINT uk_email UNIQUE (email)

Insertered veya güncelleştirilmesi teşebbüs değeri zaten tabloda varsa, MySQL sorgu belirten bir hata uygun benzersiz kısıtlamayı (muhtemelen her ikisi) ihlal dönecektir. Bu incelikle bu işlemek için kurulum PHP için size kalmış.

i bir else if deyimi ile birlikte sql deyimi kullanılır.

mysql_select_db($database_speedycms, $speedycms);
$query_usercheck = "SELECT * FROM tbl_users WHERE username='$user' OR email='$email'";
$usercheck = mysql_query($query_usercheck, $speedycms) or die(mysql_error());
$row_usercheck = mysql_fetch_assoc($usercheck);
$totalRows_usercheck = mysql_num_rows($usercheck);

o zaman

if ( $totalRows_usercheck > 0 )

eklenmesini herhangi çoğaltmaları önlemek için bir hata iletisi görüntüler

Aksi yerleştirin veritabanı izin

Bu i de burada bu cevapları uygulamak nasıl ... satır eklemek kadar ne var:

  <?php
        if (array_key_exists('confirm',$_POST)) {

                $Cuser = $_POST['Cuser']; 
                $Cemail = $_POST['Cemail']; 
                $Cpassword = $_POST['Cpassword'];
                $md5password = md5($_POST['Cpassword']);

                mysql_query("INSERT INTO tbl_users (`username`,`email`,`password`)
VALUES ('$Cuser', '$Cemail', '$md5password')"); 

                echo "Thank you. The user <b>".$Cuser."&nbsp;(".$Cemail.")</b> has been successfully added to the database.<p>

                <a href='myaccount.php' class='form'>Return</a>";       

                exit;
        }
        ?>

Ben bir if ... else deyiminde tüm uygulamak olduğunu tahmin ediyorum?