Как проверить наличие записей в таблице MySQL через PHP?
Функция проверяет, есть ли уже в таблице 'users' запись о пользователе. 

Ваша функция не делает ничего вообще. В таблице users как минимум есть рут, и потому она всегда возвращает истину. 

public function checkUser($user)
    {
        global $connection;
        $stmt=$connection>prepare("SELECT * FROM users WHERE user =:user");
        $result=$stmt->execute(array("user"=>$user));
        return $stmt->rowCount()>0 ? true : false;
    }
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. Привыкай всегда понимать, откуда и куда у тебя идут переменные, чтобы четко знать какая переменная у тебя что содержит и откуда взялась. А не просто с неба свалилась. Пеередавай переменные в функцию только через параметры