2016-03-27 23 views
1

Zayıf biçimlendirme için özür dilerim, ancak bana yardımcı olabilir. İlk önce e-postanın veritabanında olup olmadığını kontrol ediyorum. Benim sorunum burası. Diğer her şey $ checkemail hariç çalışıyor.MySQL veritabanında e-postanın olup olmadığını kontrol etme hatası?

<?php 
if (array_key_exists("submit", $_POST)) { 
    $link = mysqli_connect("localhost", "charlieroth", "Charlie123", "betausersdb"); 
    if (mysqli_connect_error()) { 
     die("Error Connecting To Database"); 
    } 

    $checkemail = "SELECT `email` FROM `users` WHERE `email` = '".mysqli_real_escape_string($link, $_POST['email'])."'"; 
    $query = mysqli_query($checkemail); 
    if (mysqli_num_rows($query) > 0) { 
     // do nothing 
    } else { 
     if (validateEmail($_POST['email'])) { 
      $addEmail = "INSERT INTO `users` (`email`) VALUES ('".mysqli_real_escape_string($link, $_POST['email'])."')"; 
      mysqli_query($link, $addEmail); 
      // add email 
     } 
    } 
} 

function validateEmail($useremail) { 
    if (!preg_match('/^([a-z0-9\+\_\-\.]+)@([a-z0-9\+\_\-\.]{2,})(\.[a-z]{2,4})$/i', $useremail)) { 
     // echo "Invalid Email"; 
     return false; 
    } else { 
     $domain = array('umich.edu'); 
     list(, $user_domain) = explode('@', $useremail, 2); 
     return in_array($user_domain, $domain); 
    } 
} 
?> 
+0

Bir hata mesajı alıyor musunuz? Mysqli_error() 'ı kontrol ettiniz mi? mysqli_query ($ link, $ addEmail) veya die (mysqli_error ($ link)); – Sean

+0

Bunu daha ayrıntılı olarak açıklayabilir misiniz? –

+0

@Sean Gerçekten bunu nereye ekleyeceğimi bilmiyorum. Ben PHP ve MySQL –

cevap

0

İlk mysqli_query öğenizde bir hata var. Bunu yapın:

<?php 

     function validateEmail($useremail) { 
      if (!preg_match('/^([a-z0-9\+\_\-\.]+)@([a-z0-9\+\_\-\.]{2,})(\.[a-z]{2,4})$/i', $useremail)) { 
       // echo "Invalid Email"; 
       return false; 
      } else { 
       $domain = array('umich.edu'); 
       list(, $user_domain) = explode('@', $useremail, 2); 
       return in_array($user_domain, $domain); 
     } 
    } 

    $mail = addslashes($_POST['email']); 
    if (array_key_exists("submit", $_POST)) : 
      $link = mysqli_connect("localhost", "charlieroth", "Charlie123", "betausersdb"); 
      if ($link) : 
      $checkemail = "SELECT * FROM 'users' WHERE email = '$mail' "; 
      $query = mysqli_query($link, $checkemail); 
      if (mysqli_num_rows($query) > 0) { 
         // do nothing 
      } 
      else { 
        if (validateEmail($mail) { 
         $addEmail = "INSERT INTO 'users' (email) VALUES ($mail)"; 
         mysqli_query($link, $addEmail); 
         // add email 
        } 
      } 
      } 

      else : 
       echo 'Error'; 

      endif; 


    endif; 
?> 
+0

Yani 'list (, $ user_domain)' ile ilgili bir sorun yok mu? (bkz. [bu yorum] (http://stackoverflow.com/questions/36253759/error-in-checking-if-email-exists-in-mysql-database#comment60137261_36253759)) – Sean

+0

Bunun gibi yarı-sütunlu gösterim kullanabilir misiniz? PHP'de? Sadece sormuyorum diye sormadım –

+0

@Sean no –

İlgili konular