2013-12-10 65 views
0

我是新來的MySQL,所以任何幫助,將不勝感激。 我已經寫了下面的函數來從電子郵件和密碼匹配的數據庫中提取用戶標識,但它不起作用。如果我把我的信息,它返回一個用戶ID爲0,我的用戶ID是19.Mysql登錄 - 選擇條目

function correctPassword($db, $userID, $password){ 
    $sql = "SELECT user_id FROM event_user WHERE user_email = '$userID' AND user_password = md5('$password')"; 
    $_SESSION['userId'] = mysql_query($sql, $db); 
    if ($_SESSION['userId'] != 0) 
     return TRUE; 
    else 
     return FALSE; 
} 

您的任何建議專業人士?

+0

MD5函數調用不正確 –

+1

現在您已經開始學習Mysql了,我強烈建議您從頭開始學習如何使用Prepared Statements。通過使用mysql_函數,您可以讓應用程序對SQL注入打開。 http://net.tutsplus.com/tutorials/php/why-you-should-be-using-phps-pdo-for-database-access/。 – raygo

回答

0

試試這個

function correctPassword($db, $userID, $password){ 
    $sql = "SELECT user_id FROM event_user WHERE user_email = '$userID' AND user_password = '" . md5($password) . "'"; 
    $_SESSION['userId'] = mysql_query($sql, $db); 
    if ($_SESSION['userId'] != 0) 
     return TRUE; 
    else 
     return FALSE; 
} 
+0

這與我所調用的md5中的更改除外相似。我試過這個,我仍然得到一個0的用戶ID。任何其他的想法? – user3088720

+0

是鹹魚的密碼?用戶名是真正的用戶郵箱嗎?是mysql_query返回一個整數嗎?你問的是mysql_query!= 0的結果,它可能不會返回結果,而是返回結果的資源。嘗試var_dump(mysql_query($ sql,$ db));你看到了什麼? – robbmj

+0

我不知道你說的是什麼意思。用戶標識實際上是一個電子郵件地址。 – user3088720

0

添加該功能的連接,還請求mysql_query返回資源類型,所以你不能老是把在SESSION

function correctPassword($db, $userID, $password){ 
    global $db; 
    $sql = "SELECT user_id FROM event_user WHERE user_email = '$userID' AND user_password = '" . md5('$password') . "'"; 
    $result = mysql_query($sql, $db); 
     $row=mysql_fetch_assoc($result); 
     $_SESSION['userId']=$row['userId']; 
    if (isset($_SESSION['userId'])){ 
     return TRUE; 
    }else{ 
     return FALSE; 
    } 
} 

忽略SQL醫生準備注射。

+0

你是什麼意思的連接? $ db連接到我的數據庫。 – user3088720

+0

變量,其中主機,用戶,密碼,就像$ blah = mysql_connect(blah ....) – Mihai

+1

這就是$ db爲我做的。 – user3088720

0

我在這樣的代碼所做的一些常見的錯誤是:

1)不宜與session_start()啓動會話。

2)不能轉義單引號。 MySQL不喜歡單引號,並且不會介意如果找到一個,就打斷你的查詢。