[英]I don't know what's wrong with this code SQL
我是PHP和Mysql的新手,由於某種原因,它僅檢查是否輸入用戶名或電子郵件的語句if($ email == $ result2)。 不知道為什么 有人可以從邏輯上解釋它,我被困了幾個小時才弄清楚。 :(謝謝,請客氣。
<?php
session_start();
include_once("connect.php");
$email = $_POST['email'];
$username = $_POST['username'];
//echo $_POST['email'];
if(isset($_POST['email']) )
{
$extract= mysql_query("SELECT username, email FROM users");
$resultq = mysql_num_rows($extract);
while($row= mysql_fetch_array($extract))
{
$result = $row['username'];
$result2 = $row['email'];
//$pass = $_POST['pass'];
if($email == $result2 )
{ //check if there is already an entry for that username
echo "Email Address is already used!";
exit(); //break;
}
if ($username == $result )
{
echo " Username is already Taken!";
//mysql_query("INSERT INTO users (Username, Password) VALUES ('$user', '$pass')");
//header("location:index.php");
exit(); //break;
}
else
{
}
}
}
它的行為如所寫。 如果任何一個if()
測試都成功,則告訴腳本exit()
。
刪除exit()調用...
您還真的需要了解查詢中的WHERE
子句。 您正在遍歷整個用戶表並一次比較一條記錄。 這相當於開車去雜貨店,買下整個商店的存貨,開車回家……然后把它們全部扔進垃圾桶,因為您真正想要的只是一個糖果吧。
我認為您最好在電子郵件和用戶名列中使用唯一性,然后您不再需要檢查它,mysql將為您做到這一點!
嘗試這個
if($email == $result2 )
{ //check if there is already an entry for that username
echo "Email Address is already used!";
//---------removed that line
}
else if ($username == $result ) //add else if instead of if
{
echo " Username is already Taken!";
//mysql_query("INSERT INTO users (Username, Password) VALUES ('$user', '$pass')");
//header("location:index.php");
//----------removed that line
}
else
{
}
編輯:
改變這個
if(isset($_POST['email']) )
至
if(isset($_POST['email']) or isset($_POST['username']))
這要檢查他們兩個。 您正在檢查的只是電子郵件,這就是為什么您沒有第二個if的原因。
在注釋掉第一個if語句(if($ username == $ result))之后,它是否進入第二個if語句(if($ username == $ result))?
如果是這樣,那么它將繼續命中該exit()函數。
伙計們,我有點通過合並您的一些評論來猜測答案。 由於某種原因,我需要將isset($ _ POST ['username'])和isset($ _ POST ['email'])包括在內,以便我的if語句全部執行...也許是isset檢查是否存在是用戶名的值。
將此行更改為以下行:
$extract= mysql_query("SELECT username, email FROM users");
然后使用where子句,如下所示:
$extract= mysql_query("SELECT username, email FROM users where username='$username' and email='$email'");
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.