Php 致命错误:未捕获错误:调用bool上的成员函数RowCount()

Php 致命错误:未捕获错误:调用bool上的成员函数RowCount(),php,mysql,pdo,Php,Mysql,Pdo,ı我的登录页面有问题。我得到了这个错误: 致命错误:未捕获错误:在C:\xampp\htdocs\root\login.php中调用bool上的成员函数RowCount:43堆栈跟踪:在C:\xampp\htdocs\root\login.php的第43行抛出0{main} 行计数在所有数据库API中都存在。你的代码就是一个很好的例子 您的数据库结果已经存在于$query中,这意味着您不需要其他任何东西。只需去掉rowCount行并在以下条件中使用$query: $query = $db->

ı我的登录页面有问题。我得到了这个错误: 致命错误:未捕获错误:在C:\xampp\htdocs\root\login.php中调用bool上的成员函数RowCount:43堆栈跟踪:在C:\xampp\htdocs\root\login.php的第43行抛出0{main}

行计数在所有数据库API中都存在。你的代码就是一个很好的例子

您的数据库结果已经存在于$query中,这意味着您不需要其他任何东西。只需去掉rowCount行并在以下条件中使用$query:

$query = $db->query("SELECT * FROM yonetim WHERE ...")->fetch(PDO::FETCH_ASSOC);
if ($query){
两个必须注意的事项:

在任何情况下都不应将数据变量直接放入查询中。改为使用占位符和准备好的查询。 使用MD5并不比存储为纯文本好多少。您必须改为使用密码验证。 下面是我为代码编写的一个规范示例:


请看-它实际上比您当前的代码简单得多

您的sql正在失败。$username周围不需要{}。查询失败。检查以了解原因。
$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ı!";
}