if ($result = $connection->query($checkUserQuery)) {
Это очень распространенная ошибка.
И очень нелогичная.
Ты, когда запрашиваешь выписку в банке чтобы узнать, есть ли у тебя деньги, на что смотришь? Просто на то пришла ли выписка, или нет? Серьёзно? Или все-таки
смотришь в саму выписку, какие там цифры?
query() возвращает результат запроса. Результат с нулем строк - это тоже результат. Сами строки ты получаешь другими функциями.
Чтобы узнать, еслть ли в таблице данные, нельзя запрашивать все строки. А представь что ты наконец освоишь программирование и на твоем сайте будет миллион пользователей. Будешь всех запрашивать в РНР чтобы узнать, есть ли хоть один?
Если надо узнать, есть ли в базе хоть один пользователь, надо и запрашивать одного. Л - логика.
function usersTableNotEmpty($connection)
{
$checkUserQuery = 'SELECT 1 FROM users LIMIT 1';
$result = $connection->query($checkUserQuery);
$row = $result->fetch_row();
return (bool) $row;
}
Кроме того, забудь про global. Привыкай всегда понимать, откуда и куда у тебя идут переменные, чтобы четко знать какая переменная у тебя что содержит и откуда взялась. А не просто с неба свалилась. Пеередавай переменные в функцию только через параметры