sql >> データベース >  >> RDS >> Mysql

PHP/mySQL-ネストされた行を多次元配列にフェッチする方法

    クエリは次のようになります。

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

    ネストされたループを繰り返し処理する場合は、このデータを配列にプルする必要があります。プルバックしすぎてメモリを消費しすぎないようにしてください。

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

    次に、ループできます:

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

    注:これは、$scaleと$itemの両方に両方のテーブルのフィールドが含まれるという点でやや単純です...それが問題になる場合は、上記のループの割り当てを変更して、必要なフィールドのみを引き出す必要があります。

    >

    1. PDOを使用したエラー処理のベストプラクティス

    2. MySQLクエリでの一貫したランダムな順序

    3. SQLServerでSELECTから更新する方法

    4. Rails4session.idは時々nil