2013-07-01 101 views
-1

所以我有一個如果在PHP語句來檢查,如果一個用戶名/電子郵件已經在SQL表中使用,但是當我測試它,它口口聲聲說用戶名/電子郵件已在使用,即使其不。所以我假設我做了if語句或檢索數據錯誤,但是我找不到我做錯了什麼。另外,當我檢查字段是否爲空時,即使它們仍在繼續,也不要求它們填寫所有字段。所以如果有人能告訴我這些代碼行有什麼問題,我會很感激。謝謝。獲取SQL數據錯誤?

$sql="SELECT username, email FROM table_name"; 
$result=mysqli_query($con,$sql); 

if($result === FALSE){ 
}else{ 
$row=mysqli_fetch_array($result); 
} 

if (empty($_POST['firstname']) || empty($_POST['lastname']) || empty($_POST['username']) || empty($_POST['email']) || empty($_POST['password']) || empty($_POST['password2'])) { 
if(!($_POST['username'] == $row['username']) && ($_POST['email'] == $row['email'])) { 

} else { 
    echo '<script type="text/javascript">' 
    , 'window.alert("That username or email is already in use.")' 
    , '</script>'; 
} 
} else { 
    echo '<script type="text/javascript">' 
    , 'window.alert("Please fill in all the fields.")' 
    , '</script>'; 
} 
+0

嘗試呼應查詢的結果和$ _POST陣列屏幕:回聲$ _ POST [「用戶名」]和回聲$行[「用戶名」]直觀地比較。 –

+0

您可以選擇查詢中的所有行,但只檢索的第一行。你應該添加一個'WHERE'條款,並通過用戶名和電子郵件,讓MySQL的引擎進行搜索。重點得到驗證第一個工作日,當你已經完全測試過,並得到它的工作,移動到數據庫查詢檢查不要試圖一下子解決很多問題,打破它 – MrCode

+0

另一件事 - 。你如果主聲明只有當表單中的某個字段爲空時纔會讓您進入。 –

回答

0

試試這個代碼:

SELECT username, email FROM table_name WHERE username="user" AND email="email"

您需要通過查詢列信息進行比較的數據庫,或者它會從數據庫中返回所有行。因此,您總能得到除FALSE以外的返回值。

2

如果從數據庫中獲取一個數組,命名爲$row,你必須去通過陣列,並檢查用戶名||發現電子郵件。 (注意我改名爲$row -> $rows

if($result === FALSE){ 
}else{ 
$rows=mysqli_fetch_array($result); 
} 
if(isset($_POST['firstname']) && isset($_POST['lastname']) && isset($_POST['username']) && isset($_POST['email']) && isset($_POST['password']) && isset($_POST['password2'])){ 
    foreach ($rows as $row) { 
     if($row['username'] == $_POST['username'] || $row['email'] == $_POST['email']){ 
      echo '<script type="text/javascript">' 
      , 'window.alert("That username or email is already in use.")' 
      , '</script>'; 
      break; 
     } 
    } 
} 
else{ 
echo '<script type="text/javascript">' 
    , 'window.alert("Please fill in all the fields.")' 
    , '</script>'; 
} 

希望我得到了這一切的權利,使用平板電腦

+1

'mysqli_fetch_array'正好提取***一行。 – deceze

+0

'isset($ VAR1,$ VAR2,$ VAR3)',而不是'isset($ VAR1)&& isset($ VAR2)&& isset($ VAR3)' – MrCode

+0

我從這次得到這個錯誤? 警告:在第106行爲/home/username/public_html/register.php中的foreach()提供了無效參數。 第106行是foreach($ rows爲$ row){ – TheQuantumBros