2013-01-03 105 views
0

所以即時嘗試做什麼應該看起來可能是一個非常簡單的平凡任務。我試圖檢查我的數據庫中的電子郵件地址。我不知道我是否在正確的軌道上,有人能把我掐死嗎?檢查在MySQL數據庫中的電子郵件地址db

$query = "SELECT * FROM 68_users WHERE email= $email"; 
if($result = mysqli_query($link, $query) == $email) { 
    echo 'Email has been registered'; 
}else{ 
    $query = "INSERT INTO 68_users (email,pass,old_pass,first_name,last_name,dob,gender,phone,fanmail) 
      VALUES ('$email',AES_ENCRYPT('$pass', 'something'),AES_ENCRYPT('$pass', 'something'),'$first_name','$last_name','$dob','$gender','$phone','$fanmail')" 
      or die(mysqli_error()); 
    if (!mysqli_query($link, $query)) { 
     echo 'error: '.mysqli_error($link); 
     exit(); 
    } 
} 
mysqli_close($link); 
} 

謝謝大家的幫助。我需要弄清楚php的調試情況。現在,我在Eclipse和調試我的網站上寫的,十分令人氣憤..這是我用什麼:

$query = "SELECT * FROM 68_users WHERE email= '$email'"; 
$result = mysqli_query($link, $query); 
if($result->num_rows > 0) { 
    echo 'This email has previously been registered'; 
}else{ 
    $query = "INSERT INTO 68_users (email,pass,old_pass,first_name,last_name,dob,gender,phone,fanmail) 
    VALUES ('$email',AES_ENCRYPT('$pass', 'something'),AES_ENCRYPT('$pass', 'something'),'$first_name','$last_name','$dob','$gender','$phone','$fanmail')" 
    or die(mysqli_error()); 
    if (!mysqli_query($link, $query)) { 
     echo 'error: '.mysqli_error($link); 
     exit(); 
    } 
    header('Location: http://www.example.com/html/thankyou.html') ; 
} 
+3

如果您運行它,會發生什麼情況? –

+2

'WHERE email = $ email'至少需要'WHERE email ='$ email'',你不應該使用'AES_ENCRYPT'作爲密碼,因爲它是可逆的,我猜你很容易被SQL注入。 – ceejayoz

+0

在這裏使用準備好的語句 - 會讓你的生活更輕鬆 – ethrbunny

回答

2

此查詢將失敗,因爲您需要圍繞電子郵件變量的撇號。您也可以簡單地運行查詢並查看返回的行數:

$query = "SELECT * FROM 68_users WHERE email= '$email'"; 
$result = mysqli_query($link, $query); 
if($result->num_rows > 0) { 
    echo 'Email has been registered'; 
}else{ 
// .... 
} 
1

您需要的變量$email周圍quotes

$query = "SELECT * FROM 68_users WHERE email= '$email'"; 

您將需要看到其餘代碼的結果,知道其他一切正常工作。

1

不知道你當前的代碼的結果,一個問題,我可以當場的是,你要確保你用單引號爲您查詢語句的電子郵件值,以確保它是正確的評估:

$query = "SELECT * FROM 68_users WHERE email='$email'"; 

當您的查詢執行時,省略引號會導致錯誤,這取決於您的詳細處理,可能會或可能不明顯。作爲進一步的一點,這將是基本調試的起點,這是所有程序員的基礎。

刪除您的電子郵件的平等檢查,因爲您的查詢語句已經爲您做了。如果沒有任何行返回,那麼它將返回false並觸發else語句:

$query = "SELECT * FROM 68_users WHERE email='$email'"; 
if($result = mysqli_query($link, $query)) { 
    // Registered 
}else{ 
    // Not Registered 
} 
0
$query = "SELECT * FROM 68_users WHERE email= '$email'"; 

也將返回值的數組,你的「如果($結果... == $電子郵件)「將失敗。

* var_dump($ result)*查看從查詢返回的內容。

相關問題