Твоя проблема заключается в варварском способе, которым ты работаешь с запросами.
Великий писатель Марк Твен еще в позапрошлом веке писал про дурака, который не нашел лучшего применения королевской печати, кроме как орехи колоть. Не надо уподобляться этому дураку.
PDO надо использовать по-человечески, а не орехи им колоть. Все запросы надо выполнять через
подготовленные выражения.
Вот как на самом деле должен выглядеть твой код:
if (empty($errors)) {
$stmt = $db->prepare("SELECT count(*) FROM users WHERE email = ? OR login = ?");
$stmt->execute([$email, $login]);
$count = $stmt->fetchColumn();
// Если найдены, значит логин/эмайл заняты, не регистрируенм, а выводим ошибку
if ($count > 0) {
exit("email или login занят!");
} else {
$sql = "INSERT INTO users (login, email, password) VALUES (?,?,?)";
$db->prepare($sql)->execute([$login, $email, $password]);
echo '<div class="okreged">Вы успешно зарегистрированы! <a href = "/test/index.php">Перейти на главную</a></div>';
}
}