2015-11-25 68 views
5

我知道我們已經有很多關於這個錯誤的問題,但我無法修復我的代碼,所以任何人在這裏請幫我解決這個問題。 我這樣的代碼警告:mysql_result()期望參數1是資源,布爾給出

function login($username, $password) { 
    $user_id = user_id_from_username($username); 

    $username = sanitize ($username); 
    $password = md5 ($password); 

    return (mysql_result(mysql_query("SELECT COUNT (`user_id`) FROM `users` 
     WHERE `username` = '$username' AND `password` = '$password'"),0)==1) ? $user_id : false; 

我期待着從你們的來信。我是這個新會員,所以請儘可能簡單地回答您的問題。謝謝。

+2

迴應您的查詢而不是執行它,複製它,粘貼到phpmyadmin或類似的東西,看看查詢是否執行。 – Epodax

+1

http://stackoverflow.com/questions/12859942/why-shouldnt-i-use-mysql-functions-in-php?rq=1 –

+1

爲什麼你第一次找到user_id用戶名,然後你第二次查詢來驗證密碼,而不是立即做出來?並在這兩個行動之間,你清理用戶名(所以它可能會變得甚至不同之間的2個查詢..) – Svetoslav

回答

-1

刪除false旁邊的查詢中的最後一個``。

+0

哪裏是符號'你的意思是?你能修復它並在這裏爲我打印正確的代碼嗎? –

+0

return(mysql_result(mysql_query(「SELECT COUNT('user_id')AS count from'users' WHERE'username' ='$ username'AND'password' ='$ password'」),0)== 1)? $ user_id:false; –

+0

謝謝你的幫助,但它仍然不適用於我:(( –

0

這裏有一點你重拍的方法。

!重要 - MYSQL功能應與庫MySQLi被替換爲MySQL驅動程序是一個PHP 5.5以後棄用,並在新PHP7刪除...

function login($username, $password) { 
    $username = sanitize ($username); 
    $password = md5 ($password); 

    $sql = "SELECT `user_id` FROM `users` WHERE `username` = '{$username}' AND `password` = '{$password}'"; 
    $result = mysql_query($sql); 
    if($row = mysql_fetch_assoc($result)) { 
     return $row['user_id']; 
    } 
    return FALSE; 
} 
+0

謝謝,但它仍然不適用於我:(( –

+0

我關注這一個從YouTube的視頻,他們可以運行它,而我不能。 –

+0

什麼是不工作?你想從這個功能? – Svetoslav

0

的mysql_query將返回false上的錯誤,以及成功的資源。在調用mysql_result之前,你需要檢查mysql_query的返回值。

$resource = mysql_query("SELECT COUNT (`user_id`) FROM `users` WHERE `username` = '$username' AND `password` = '$password'") or die(mysql_error()); 
if($resource !== false) 
{ 
    return (mysql_result($resource,0)==1) ? $user_id : false; 
} 
return false 

我也逃脫輸入,如果你還沒有這樣做已經在使用mysql_real_escape_string()

+0

它不適用於我,仍然錯誤,我確實在視頻上關注這一個,他們可以運行它,而我不能。 –

+0

如果您仍然收到該警告,我會懷疑您收到數據庫錯誤。也許回聲SQL並手動運行並解決SQL錯誤。一旦這個工作正常,那麼你可以排除。 –

0

那是錯誤意味着所有在mysql_result(在這裏)是返回false不是國土資源!

您需要的var_dump,您在您的查詢 得到的最終結果,然後嘗試通過的PMA通過控制檯從MySQL>
執行中你會看到,沒有什麼是查詢返回或錯誤。

然後修復您的查詢和/或代碼,很酷!

如果太難,發表評論您的結果查詢,我會修復它!

相關問題