Как можно проверить наличие записей в результате выполнения запроса в PHP без использования функции num_rows?

Как можно улучшить запрос, чтобы проверять наличие записи пользователя и его статус блокировки в БД без указания жестко заданного количества записей в функции `mysqli_num_rows` каждый раз при регистрации нового пользователя?
  • 8 марта 2024 г. 11:28
Ответы на вопрос 2
Для проверки наличия записей в результате выполнения запроса в PHP без использования функции `num_rows`, можно использовать функцию `fetch_array` или `fetch_assoc` для получения данных из результата запроса и проверять их наличие.

Пример:

```php
$query = "SELECT * FROM users WHERE username = 'test'";
$result = mysqli_query($con, $query);

if ($result->fetch_assoc()) {
    // записи есть
} else {
    // записей нет
}
```

Для улучшения запроса и проверки наличия записи пользователя и его статуса блокировки в БД без указания жестко заданного количества записей в функции `mysqli_num_rows`, можно использовать операторы `COUNT` и `HAVING` в SQL запросе.

Пример:

```php
$username = 'test';
$status = 'active';
$query = "SELECT COUNT(*) as count FROM users WHERE username = '$username' AND status = '$status' HAVING count > 0";
$result = mysqli_query($con, $query);

if ($result->fetch_assoc()) {
    // запись пользователя с указанным статусом существует
} else {
    // запись пользователя не существует или его статус не соответствует требуемому
}
```

Таким образом, можно убрать жестко заданное количество записей и проверить наличие только нужной записи в результате выполнения запроса.
Одним запросом вам нужно выбрать пользователя со всем его данными 
А потом просто посмотреть, что у него в столбике isBanned

Псевдокод (а то за реальный меня ругают умники) для демонстрации принципа:

$user  = SELECT * FROM users WHERE username = '';

if ($user['isBanned']) {
  echo 'You banned!';
}
Похожие вопросы