Почему при запросе SQL через тело функции PHP получаю ошибку соединения?
Главная проблема пхп в том, что во всех онлайн учебниках написан ужас из прошлого века. И самое печальное что пользователи тиа AUser0 его бездумно повторяют.  

Вот как будет правильно:
function get_user($connection, $user_id) {
    $stmt = $connection->prepare('select * from users WHERE id=?');
    $stmt->bind_param("s", $user_id); 
    $stmt->execute();
    return $stmt->get_result()->fetch_assoc();
}
Про область видимости переменных уже подсказали, внимательно изучайте.
А что-бы было на чём осознать написанное в документации, вот ваш код (с простейшей защитой от SQL-иньекций, тоже стоит изучить):
function sql_query($user_id) {
    global $connection;
    $query = "SELECT * FROM users WHERE id='".mysqli_real_escape_string($connection, $user_id)."'";
    if(!$query_result = mysqli_query($connection, $query)) {
            die('Query failed: '.mysqli_error($connection));
    } else {
            echo ('Complete');
    }
    return $query_result;
}