2017-10-05 139 views
0

我想檢查一下用戶名或電子郵件地址是否已經存在於我的數據庫中。我目前可以連接到我的數據庫並從註冊表單中檢索數據。但是,我的SQL語句無法檢查我的數據庫以查看用戶是否存在。任何幫助表示讚賞,謝謝。檢查重複的用戶帳戶和電子郵件地址

<?php 

require 'database.php'; 
$conn = Connect(); 

if ($conn == true){ 
    echo "Successfully connected to database. <br><br>";} 

    $username  = $_POST['screenname']; 
    $password  = $_POST['password']; 
    $email   = $_POST['email']; 

    echo "$username<br>"; //just checkin if it can grab data 
    echo "$password<br>"; 
    echo "$email<br>"; 


    $sql=mysql_query("SELECT * FROM users WHERE screenname = '$username'"); 

    if(mysql_num_rows($sql)>=1) 
    { 
     echo "Username already exists"; 
    } 
    else 
    { 
     //insert query goes here 
    } 


    $sql2=mysql_query("SELECT * FROM users WHERE email = '$email'"); 

    if(mysql_num_rows($sql2)>=1) 
    { 
     echo "Email already exists"; 
    } 
     else 
    { 
      //insert query 
    } 


    ?> 
+0

看起來不錯,哪些部分不工作? – LordNeo

+0

多數民衆贊成多數民衆認爲,我也認爲,當我輸入相同的用戶名註冊它不會打,如果語句和回聲如果用戶名存在..它只是什麼都不做。 – Gillky

+0

如果你願意,你可以首先回顯'mysql_num_rows'的結果,檢查它是否顯示你真正期望的內容 – Swellar

回答

0

邏輯,編程和安全性(SQL注入攻擊)的錯誤修正:

<?php 

require 'database.php'; 
$conn = Connect(); 

if ($conn == true){ 
    echo "Successfully connected to database. <br><br>"; 
} 

$username  = $_POST['screenname']; 
$password  = $_POST['password']; 
$email   = $_POST['email']; 

echo "$username<br>"; //just checkin if it can grab data 
echo "$password<br>"; 
echo "$email<br>"; 


$sql= sprintf("SELECT * FROM users WHERE screenname='%s' OR email='%s'", 
     mysql_real_escape_string($username), 
     mysql_real_escape_string($email) 
    ); 

if(mysql_num_rows($sql)>=1) 
{ 
    echo "Username or e-mail already exists"; 
} 
else 
{ 
    //insert query goes here 
} 
+0

你也應該學習對象編程,2017年!使用對象PHP的MySQL連接:PDO! https://www.w3schools.com/PhP/php_mysql_connect.asp – JerzySBG

相關問題