2014-03-02 49 views
0

我想用MySQL做密碼驗證,但它不起作用。相反,如果子句中比較它打印MySQL_fetch_objectMysql_fetch_data意外打印

public function __construct($userId, $userPassword) { 
    $this->userId = $userId; 
    $this->userPassword = $userPassword; 
    $connect = mysql_connect('localhost', 'php', 'geheim') or exit(); 
    $users = mysql_select_db("chat", $connect) or exit(); 
    $request = "SELECT userPassword FROM user WHERE userId=$userId"; 
    $result = mysql_query($result); 
    if(mysql_fetch_object($result)->userPassword === $userPassword){ 
     echo "Right Password"; 
    } 

,但只打印這個雖然我從來沒有說過要呼應它:

verificateUser對象([用戶名:verificateUser:私人] = > 1的userPassword:verificateUser:私人] => 12345)

我在做什麼錯? Thx的幫助!

回答

1

試試這個

public function __construct($userId, $userPassword) { 
$this->userId = $userId; 
$this->userPassword = $userPassword; 
$connect = mysql_connect('localhost', 'php', 'geheim') or exit(); 
$users = mysql_select_db("chat", $connect) or exit(); 
$request = "SELECT userPassword FROM user WHERE userId=$userId"; 
$result = mysql_query($result); 
$userpass =mysql_fetch_assoc($result); 
if($userpass['userPassword'] == $userPassword){ 
    echo "Right Password"; 
} 
} 

編輯:,如果你感興趣下面關於

public function __construct($userId, $userPassword) { 
$this->userId = $userId; 
$this->userPassword = $userPassword; 
$connect = mysql_connect('localhost', 'php', 'geheim') or exit(); 
$users = mysql_select_db("chat", $connect) or exit(); 
$request = "SELECT userPassword FROM user WHERE userId=$userId"; 
$result = mysql_query($result); 
$userpass =mysql_fetch_assoc($result); 
if($userpass['userPassword'] == $userPassword){ 
    return true: 
} 
return false; 
} 

然後,此方法可以檢查像

if(__construct($userId, $userPassword) == true) { you welcome} 
    if(__construct($userId, $userPassword) == false) {do your pass again} 
+1

'mysql_fetch_assoc'返回ASSOC陣列不是一個對象可能意味着'mysql_fetch_assoc($ result)[「userPasswo rd「]'並且只在新版本上允許在返回時直接使用數組符號,所以在較舊的版本上您需要兩行來獲取值。 –

+0

這是正確的,編輯。 –

+0

@sunfingerde剛剛編輯我的回答,我認爲它更好,如果你可能對reutrn和檢查目的感興趣。 –