Ich würde nur eine einfache Abfrage empfehlen, um alle Zeilen abzurufen, sortiert nach Kategorie-ID. Geben Sie die Kategorie nur aus, wenn sich ihr Wert gegenüber der vorherigen Zeile ändert.
<?php
$stmt = $pdo-> query("SELECT * FROM `myTable` ORDER BY categoryID");
$current_cat = null;
while ($row = $stmt->fetch()) {
if ($row["categoryID"] != $current_cat) {
$current_cat = $row["categoryID"];
echo "Category #{$current_cat}\n";
}
echo $row["productName"] . "\n";
}
?>