在使用password_hash()添加加密密码之前,我正在尝试使用简单的代码。
HTML
<form action="includes/process_login.php" method="post" name="login_form">
Email: <input type="text" name="email" id="email" />
Password: <input type="password" name="password" id="password"/>
<input type="submit" value="Connection" />
</form>
PHP
$req = $bdd->prepare('SELECT COUNT(*) AS membre_valide FROM membres WHERE password = :password AND email = :email');
$req->bindValue(':password', $_POST['password'], PDO::PARAM_STR);
$req->bindValue(':email', $_POST['email'], PDO::PARAM_STR);
$data = $req->execute();
$req->closeCursor();
if ( $data['membre_valide'] != 0 ) {
echo 'Connected';
}
else {
echo 'Not found';
}
echo
一$data
,它始终返回1
。
但是当我在mysql中运行SQL行时,它会返回好的答案。
为什么?
答案 0 :(得分:2)
你execute
这个功能,但你没有fetch
结果:
$exec = $req->execute();
//$exec will be "true" if it executes; "false" if it doesn't
$data = $req->fetch(PDO::FETCH_ASSOC);
//fetch() for one row, fetchAll() to retrieve all rows
答案 1 :(得分:0)
当您使用execute()发出请求时,返回值只是一个错误代码。所以基本上,这意味着请求已成功完成。要查找该值,您需要获取该值。
您应该尝试$count = (int) $req->fetch(PDO::FETCH_OBJ)->membre_valide;