Использование, которое вы пытаетесь сделать, выглядит следующим образом:
$checkquery = $db->select()
->from("users", array("num"=>"COUNT(*)"))
->where("login = ?", $login)
->where("password = ?", $password);
$checkrequest = $db->fetchRow($checkquery);
echo $checkrequest["num"];
У меня есть пара других советов:
Я бы перестроил запрос следующим образом:
$checkquery = $db->select()
->from("users", array("pwd_is_correct"=>
$db->quoteInto("(password = SHA1(CONCAT(salt, ?)))", $password)))
->where("login = ?", $login);
$checkrequest = $db->fetchRow($checkquery);
if ($checkrequest === false) {
echo "no such login\n";
} else if ($checkrequest["pwd_is_correct"] > 0) {
echo "login and password are correct\n";
} else {
echo "login found but password is incorrect\n";
}
Вам не нужно сообщать о различных случаях пользователю - фактически это лучшая практика безопасности , а не , чтобы сообщить им, какой логин или пароль неверен. Но вы, возможно, захотите узнать это в своем собственном коде, чтобы заблокировать учетную запись, которая получает много ошибочных паролей.
SHA1()
не так хорош, как SHA2()
, который доступен в MySQL 5.5 и более поздних версиях.