merhaba konu kapanmadığı için sorunun çözülmediğini düşünerek yazıyorum bu şekilde denermisiniz.

<?php
function getAllSubcategories($db, $parentID) {
    // İlk olarak doğrudan alt kategorileri çekelim
    $categories = $db->query("SELECT id FROM urun_kategori_lokma WHERE kategori='$parentID'")->fetchAll(PDO::FETCH_COLUMN);
    $allCategories = $categories;
    // Her alt kategori için tekrar fonksiyonu çağır
    foreach ($categories as $categoryID) {
        $subcategories = getAllSubcategories($db, $categoryID);
        $allCategories = array_merge($allCategories, $subcategories);
    }
    return $allCategories;
}
function getCategoryHierarchy($db, $categoryID, $delimiter = " > ") {
    $category = $db->query("SELECT * FROM urun_kategori_lokma WHERE id='$categoryID'")->fetch(PDO::FETCH_ASSOC);
    if (!$category) {
        return ""; // Kategori bulunamadıysa boş döndür
    }
    // Eğer ana kategori değilse (kategori != 0), üst kategoriyi bul
    if ($category['kategori'] != '0') {
        $parentHierarchy = getCategoryHierarchy($db, $category['kategori'], $delimiter);
        return $parentHierarchy . $delimiter . $category['adi'];
    }
    // Ana kategori ise sadece kendi adını döndür
    return $category['adi'];
}

?>

<div class="main category">
    <div class="container">
        <h5 class="page-subtitle text-center"></h5><br/>
        <div class="row">
            <?php
            if (strstr($_SERVER["SCRIPT_URL"], "kategori")) {
                // Ana kategorileri çekelim
                $anaKategoriler = $db->query("SELECT * FROM urun_kategori_lokma WHERE kategori='0' ORDER BY sira ASC")->fetchAll(PDO::FETCH_ASSOC);
            
                foreach ($anaKategoriler as $anaKategori) {
                    echo "<h3>" . $anaKategori["adi"] . "</h3>"; // Ana kategori başlığı
            
                    // Alt kategorileri alalım
                    $kategoriID = $anaKategori['id'];
                    $altKategoriler = getAllSubcategories($db, $kategoriID);
            
                    // Ana kategoriyi ve tüm alt kategorileri sorguya dahil edelim
                    $kategoriListesi = implode(",", array_merge([$kategoriID], $altKategoriler));
                    $urunler = $db->query("SELECT * FROM urunler_lokma WHERE kategori IN ($kategoriListesi) ORDER BY sira ASC")->fetchAll(PDO::FETCH_ASSOC);
            
                    foreach ($urunler as $goster) {
                        // Ürünün bağlı olduğu kategori hiyerarşisini alın
                        $kategoriHiyerarsi = getCategoryHierarchy($db, $goster["kategori"]);
            
                        ?>
                        <div class="col-6 col-lg-3 col-sm-4 col-md-3">
                            <a title="<?=$goster["adi"]?>" href="<?=$goster["seo"]?>">
                                <div class="product box-shadow">
                                    <div class="medium-img image" data-src="resimler/<?=$goster["resim"]?>">
                                        <img class="blur" title="<?=$goster["adi"]?>" alt="<?=$goster["adi"]?>" src="resimler/<?=$logo?>">
                                    </div>
                                    <div class="detail">
                                        <span class="name"><?=$goster["adi"]?></span>
                                        <span class="category"><?=$kategoriHiyerarsi?></span> <!-- Hiyerarşik kategori adı -->
                                        <span class="price"><?=$goster["fiyat"]?> <i class='fa fa-try'></i></span>
                                    </div>
                                </div>
                            </a>
                        </div>
                        <?php
                    }
                }
            }
            
            
            ?>
        </div>
    </div>
</div>