我刚才问了一个类似的问题,但我想我现在更接近答案。函数返回值
我有一个函数在用户的电子邮件地址和密码登录到配置文件之前验证用户的电子邮件地址和密码。
它生成一个错误消息,如果电子邮件不正确;它回应出“找不到匹配的电子邮件”。
当我输入正确的电子邮件和密码时,没有任何东西会被返回。但如果我输入错误的密码和错误的电子邮件,它会给我“没有找到匹配的电子邮件”。同样的事情发生在正确的电子邮件,但密码错误。
我试图用fetchAll
和fetchColum
返回,但是当我输入正确的值时我仍然得到相同的循环。
任何想法?
function valid_credientials($email,$password){
global $db;
$q = "SELECT * FROM user WHERE email = :email AND password =:password";
$query = $db->prepare($q);
$query->execute(array(":email" => $email, ":password" => $password));
$results = $query->fetchAll();
if($results !=FALSE && $query->rowCount() > 0) {
if($results[0]['password'] == $password){
$_SESSION['email'] = $email;
return $query->fetchAll($q,0)==1 ? true:false;
}
}
// return false by default
return false;
}
的后isset
if (isset($_POST['email'], $_POST['password'])) {
if (valid_credientials($_POST['email'], $_POST['password']) == false) {
$errors[] = 'No matching email found.';
}
if (empty($errors)) {
$_SESSION['email'] = htmlentities($_POST['email']);
header("Location: profile.php");
die();
}
}
你调用'使用fetchall()'两次,也没用(也许它会导致意想不到的行为太) – Uby
所以清爽的使用'PDO看到有人'而不是'mysql *' – asprin