Как я понял, вы хотите получить одну строку из этого SQL-запроса, и, взглянув на свой код, вы делаете fetchAll
, который возвращает либо false
, либо массив результатов с указателем, который затем должен использоваться в цикле, то есть while
.
Я бы сделал это немного по-другому (, и я познакомлю вас с подготовленными утверждениями ):
$row = $conn->query("SELECT * from user where name = :name and password = :password;");
$row->setFetchMode(PDO::FETCH_ASSOC);
$row->execute([
'name' => $username,
'password' => $password
]);
$result = $row->fetch();
if($result !== false) {
$count = $row->rowCount();
$get_user_role = $result["name"];
echo $get_user_role;
} else {
echo 'User not found or does not exist.';
}