ı我的登录页面有问题。我收到此错误: 致命错误:未捕获错误:在C:\ xampp \ htdocs \ root \ login.php:43中的bool上调用成员函数RowCount()堆栈跟踪:#0 {main}抛出在C:\ xampp \ htdocs \ root \第43行的login.php
<?php
if(isset($_POST['loginRequest'])){
$username = $_POST['email'];
$password = $_POST['password'];
$Sifreli = md5($password);
$query = $db->query("SELECT * FROM yonetim WHERE username = '{$username}'")->fetch(PDO::FETCH_ASSOC);
if($say = $query->RowCount()){
if ($say > 0){
$user = $query;
if($user['pass'] == $Sifreli){
$_SESSION['LOGGED'] = $user['username'];
if(isset($_SESSION['LOGGED'])){
header('location:index.php');
}
} else {
echo "Kullanıcı adı veya şifre hatalı!";
}
} else {
echo 'Böyle bir kullanıcı bulunmamaktadır.';
}
}
}
?>
答案 0 :(得分:1)
rowCount()
是the most useless method。您的代码就是一个很好的例子。
您已经在$ query中获得了数据库结果,这意味着您不需要任何其他信息。只需摆脱rowCount
行,并在以下情况下直接使用$query
:
$query = $db->query("SELECT * FROM yonetim WHERE ...")->fetch(PDO::FETCH_ASSOC);
if ($query){
两个强制性注释:
这是我为check the login and password using PDO编写的代码的典范示例:
$stmt = $pdo->prepare("SELECT * FROM yonetim WHERE username = ?");
$stmt->execute([$username]);
$user = $stmt->fetch();
if ($user && password_verify($password, $user['password']))
{
$_SESSION['LOGGED'] = $user['username'];
header('location:index.php');
exit;
} else {
echo "Kullanıcı adı veya şifre hatalı!";
}
请参阅-实际上比您当前的代码要简单得多!