sql >> Databasteknik >  >> RDS >> Mysql

PHP/mySQL - hur man hämtar kapslade rader till multidimensinal array

Frågan bör se ut ungefär så här:

SELECT * FROM scales
INNER JOIN items ON scales.id = items.scale_id

Om du vill iterera igenom med kapslade loopar måste du dra in dessa data i en array - förhoppningsvis drar du dig inte tillbaka så mycket att det tar upp för mycket minne.

$scales = array();

while ($row = mysql_fetch_assoc($data))
{
    if (!isset($scales[$row['scale_id']]))
    {
        $row['items'] = array();
        $scales[$row['scale_id']] = $row;
    }

    $scales[$row['scale_id']]['items'][] = $row;
}

Sedan kan du gå igenom:

foreach ($scales as $scale)
{
    foreach ($scale['items'] as $item)
        ; //... do stuff
}

Notera:detta är något naivt eftersom $scale och $item båda kommer att innehålla fält från BÅDA tabeller... om det är ett problem måste du ändra tilldelningarna i slingan ovan för att bara dra ut de fält du vill ha.



  1. Välja unika rader i en uppsättning av två möjligheter

  2. Infoga data med mysqli

  3. underfrågan i FROM måste ha ett alias

  4. Är MySQL index_length i byte?