2013-05-10 115 views
-2

我有一個問題在我的PHP腳本,當我輸入正確的用戶名是回聲「用戶發現」,當我的PHP代碼不工作結果

我輸入錯誤的用戶名是回波也是「用戶發現」。

這是我的代碼請檢查,讓我知道,如果!$結果變量應該工作,但沒有。爲什麼?。

<?php 
    echo "enter the username \n"; 
    $username = trim(fgets(STDIN)); 
    echo "enter the password\n"; 
    $password = trim(fgets(STDIN)); 

    //connecting to database 
    $db = mysql_connect("localhost","sqldata","sqldata") or die(mysql_error()); 

    //selecting our database 
    $db_select = mysql_select_db("accounts", $db) or die(mysql_error()); 

    $result= mysql_query("select * from login where username = '$username' "); 
    if (!$result) 
    { 
     echo "error no user"; 
    } 
    else 
    { 
     echo "user found"; 
    } 

    mysql_close($db) 
?> 
+0

請考慮使用不同的MySQL擴展:http://www.php.net/manual/en/intro.mysql.php – ParrotMac 2013-05-10 00:51:28

回答

0

mysql_query返回結果資源,除非MySQL查詢中存在實際錯誤。這個結果絕對沒有提示是否有實際的行。

試試這個:

$result = mysql_fetch_assoc(mysql_query("select * from `login` where `username`='".mysql_real_escape_string($username)."'")); 
if(!$result) echo "Error no user"; 
else echo "user found"; 
0

避免使用mysql_*功能,因爲它們已過時,將被刪除。

要回答你的問題,原因是因爲mysql_query如果查詢成功執行則返回一個結果對象。

您需要使用mysql_num_rows()來檢查用戶是否被找到。

$result = mysql_query("select * from login where username = '$username' "); 

if(mysql_num_rows($result) == 0) { 
    echo "error no user"; 
} else { 
    echo "user found"; 
} 

此外,您應經常檢查,查詢沒有失敗這樣的:

if (!$result) { 
    echo "Query failed! Reason: " . mysql_error(); 
    exit; 
} 
+0

謝謝你這是有幫助的 – 2013-05-10 00:46:37

0

只要查詢實際執行(即沒有一個MySQL或查詢錯誤)if(!result)會即使找到0條記錄,也始終驗證爲true。這是因爲$result是MySQL結果集資源,而不是來自查詢的直接值。

您需要檢查的行數返回:

$result= mysql_query("select * from login where username = '$username' "); 

if(!$result) { 
    echo "MySQL error: " . mysql_error(); 
} else if (mysql_num_rows($result) === 0) { 
    echo "User not found"; 
} else { 
    echo "user found"; 
} 

我也強烈建議您不要使用mysql_*功能,它們已被棄用ADN不應再使用。也許看看mysqliPDO