2016-09-09 6 views
0

Ich habe ein kleines Problem beim Abrufen und Formatieren der abgerufenen Informationen in einer Weise, die ich beabsichtige.PHP-Daten aus einer Datenbank abrufen

Grundsätzlich habe ich Produkt-IDs, die Kategorien IDs entsprechen. Ein Produkt kann mehrere Kategorien haben, und ich bekomme die Ergebnisse wie erwartet. Aber ich versuche es so zu formatieren, dass ich für jedes Produkt eine Liste von Kategorie-IDs bekomme. Gerade jetzt erhalte ich mehr Produkt-IDs für jede Kategorie-ID, die als solche:

Product Id: 65 ––> Categories Id:250 
Product Id: 65 ––> Categories Id:249 
Product Id: 66 ––> Categories Id:250 
Product Id: 66 ––> Categories Id:249 
Product Id: 66 ––> Categories Id:252 
Product Id: 66 ––> Categories Id:251 
Product Id: 66 ––> Categories Id:276 
Product Id: 66 ––> Categories Id:268 
Product Id: 66 ––> Categories Id:255 

Ich brauche es mehr zu sein wie:

Product Id: 65 ––> Categories Id:250, 249 
Product Id: 66 ––> Categories Id:250, 249, 252, 251, 276,268, 255 

Hier ist der Code Ich habe dabei die Abfrage:

$sql = "SELECT * FROM `products_categories` ORDER BY `products_categories`.`productid` ASC"; 
$result = $conn->query($sql); 

if ($result->num_rows > 0) { 
    while($row = $result->fetch_assoc()) { 
     echo "Product Id: " . $row["productid"] . " ––> " . "Categories Id:" . $row["categoryid"] . "<br>"; 
    } 
} else { 
    echo "0 results"; 
} 

Vielen Dank im Voraus für jede Eingabe.

+0

Wir brauchen mehr Informationen über die MySQL-Tabellen-Strukturen, und was die Beziehung ist: one-to-many, many-to-many? Verwenden Sie eine Join-Tabelle (3. MySQL-Tabelle)? –

+0

Die Struktur der Tabelle ist sehr ähnlich, was ich gerade bekomme. im Grunde mehrere Produkt IDs für jede Kategorie ID, die sie gehören. Diese bestimmte Tabelle hat nur diese Beziehung in sich. Ich muss schließlich den mit der Kategorie verknüpften Namen abrufen, aber solange ich die Liste der Kategorie-IDs in einer einzigen Produkt-ID-Struktur abrufen kann, wäre das gut. Und natürlich hat eine Kategorie mehrere Produkt-IDs. – Sergio

Antwort

3

USE GROUP_CONCAT

SELECT productid, GROUP_CONCAT(categoryid) as categoryid 
FROM products_categories 
group by productid 
order by productid 
+0

PyQL, Perfekt. Eine letzte Frage: Wie kann ich nach jedem Kategorie-ID einen Platz hinzufügen? Ich habe versucht, eine "" nach $ row ["categoryid"] zu verketten, aber keine Ergebnisse. Danke nochmal. – Sergio

+0

Ich habe es herausgefunden ... habe den SEPARATOR vergessen ... Danke nochmal. Wenn jemand in der Zukunft nach den gleichen Ergebnissen sucht, verwenden Sie einfach: GROUP_CONCAT (KategorieID SEPARATOR ',') – Sergio

Verwandte Themen