view_products() below displays only one data from my table product which contains 20 data. Depending on where you place return $output; either inside while loop which displays the first data or outside the while loop which displays the last data.
<?php echo view_products(); ?>
$dbhost = "localhost";
$dbuser = "root";
$dbpass = "password@edadmin";
$dbname = "estore";
$dbconn = mysqli_connect($dbhost, $dbuser, $dbpass, $dbname);
//Test if connection occurred,
if (mysqli_connect_errno()) {
    die("Database connection failed: " .
        mysqli_connect_error() .
        " (" . mysqli_connect_errno() . ")");
}
function view_products()
{
    global $dbconn;
    $sql = "SELECT * FROM product";
    $result = mysqli_query($dbconn, $sql);
    
    if (mysqli_num_rows($result) > 0) {
        while ($products = mysqli_fetch_assoc($result)) {
            $output = "<div class=\"col-lg-4 col-md-6 portfolio-item filter-app wow fadeInUp\">";
            $output .= "<div class=\"portfolio-wrap\"><figure>";
            $output .= "<img src=" . $products['ProductImage'] . " class=\"img-fluid\" alt=\"\">";
            $output .= "<a href="  . $products['ProductImage'] . " data-lightbox=\"portfolio\" data-title=\"App 1\" class=\"link-preview\" title=\"Preview\"><i class=\"ion ion-eye\"></i></a>";
            $output .= "</figure>";
            $output .= " <div class=\"portfolio-info\">";
            $output .= "<p><a href=\"#\">" . $products['ProductName'] . " </a></p>";
            $output .= "<p>" . "₦ " . $products['ProductAmount'] . "</p>";
            $output .= "</div></div></div>";
            return $output;
        }
    } else {
        return "No product yet";
    } // return $output;
}
 
     
    