sql >> Database teknologi >  >> RDS >> Mysql

PHP/mySQL - hvordan man henter indlejrede rækker i multidimensinal array

Forespørgslen skal se sådan ud:

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

Hvis du vil iterere igennem med indlejrede loops, bliver du nødt til at trække disse data ind i et array - forhåbentlig trækker du ikke så meget tilbage, at det vil æde for meget hukommelse.

$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;
}

Så kan du gå igennem:

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

Bemærk:dette er noget naivt, da $scale og $item begge vil indeholde felter fra BEGGE tabeller... hvis det er et problem, skal du ændre tildelingerne i løkken ovenfor for kun at trække de felter ud, du ønsker.



  1. Postgres now() tidsstemplet ændres ikke, når scriptet virker

  2. ScaleGrid DigitalOcean Support til MySQL, PostgreSQL og Redis™ nu tilgængelig

  3. MySql workbench-forespørgselshistorik (sidst udførte forespørgsel/forespørgsler) dvs. oprette/ændre tabel, vælge, indsætte opdateringsforespørgsler

  4. Oprettelse af funktioner i phpMyAdmin - Fejl:adgang nægtet, du har brug for superprivilegiet til denne handling