簡體   English   中英

我不知道這段代碼SQL有什么問題

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM