這肯定是之前發佈的,但我還沒有找到解決方案。我試圖從數據庫中選擇用戶名和密碼來驗證用戶是否有簡單的登錄腳本。它應該簡單地在用戶表中找到一行,用戶名和密碼與通過登錄表單提交的用戶名和密碼相匹配。PHP MySQL:從同一個表中選擇不同列的問題
我可以匹配用戶名沒有任何問題,但沒有密碼,我不知道爲什麼。
該表包含稱爲「用戶名」和「密碼」的列,表中只有1行用戶名'admin'和密碼'testpassword'。
這裏是包含三個選項的功能 - 選項1和4工作,其他兩個不工作。選項2與選項1相同,除了查找不同的列。我已檢查查詢中的列名與表中的列匹配,並且提交的值匹配。我沒有收到任何錯誤信息,也看不到可能有什麼錯誤(基本的東西,我敢肯定...)。
function new_session ($username, $pw, $inactive) {
// echo statements verify that variable match database values
echo "<h2>username = " . $username . "</h2>";
echo "<h2>password = " . $pw . "</h2>";
echo "<h2>inactive = " . $inactive . "</h2>";
$db = mydb::getConnection();
//option 1
$statement = $db->prepare('SELECT * FROM users WHERE username = :parameter');
$statement->bindValue(':parameter', $username);
//option 2
//$statement = $db->prepare('SELECT * FROM users WHERE password = :parameter');
//$statement->bindValue(':parameter', $pw);
//option 3
//$statement = $db->prepare('SELECT * FROM users WHERE password = :parameter1 AND username = :parameter2');
//$statement->bindValue(':parameter1', $username);
//$statement->bindValue(':parameter2', $pw);
//option 4
//$statement = $db->prepare('SELECT * FROM users WHERE username = "admin" AND password = "testpassword"');
$statement->execute();
$row = $statement->fetchAll();
if (count($row) == 1) {
// SESSION data is set here for options 1 and 4
}
}
密碼是否以加密形式存儲?嘗試排查查詢時出現 – larsAnders
。我嘗試以純文本形式編寫查詢並運行它。如果我不能得到這樣的結果,那麼我需要編輯我的基本查詢,然後嘗試以代碼形式編輯 – hamobi
選項3的參數順序錯誤。參數1應該是pw,參數2應該是用戶名。這應該工作正常 – Ronnie