簡體   English   中英

將兩個SQL查詢組合到一個數組?

[英]Combining two SQL queries to a array?

這是將兩個SQL查詢組合到一個數組的正確方法嗎?

注意:我知道SQL JOIN,但我需要使用兩個查詢。

見下文:

    $query = "SELECT  * FROM categories WHERE takeawayID  = :TakeawayID";
    $statement = $this->db->prepare($query);
    $statement->bindValue(':TakeawayID', $takeawayID, PDO::PARAM_STR);
    $statement->execute();
    $data['rowCats'] = $statement->fetchall(PDO::FETCH_CLASS);
    $categories = array();
    foreach ($data['rowCats'] as $cat) {
        $temp_categories = array();
        $temp_categories['id'] = $cat->id;
        $temp_categories['name'] = $cat->name;

        $num = $cat->id;

        $query = "SELECT * FROM items WHERE category_id = :category_id";
        $statement = $this->db->prepare($query);
        $statement->bindValue(':category_id', $num, PDO::PARAM_STR);
        $statement->execute();
        $data['rowItem'] = $statement->fetchall(PDO::FETCH_CLASS);
        foreach ($data['rowItem'] as $Item) {
           $temp_categories['item']['name'][] = $Item->name;
        }
                       $categories[] = $temp_categories;
    }

$ categories數組現在可以傳遞給查看文件(模板)

在視圖文件中,我應該能夠做到這樣的事情:

<?php foreach($categories as $category): ?>
    <table  border=0 Cellspacing='0'>
        <tr>
            <td>
              <?php echo $category['name']; ?>
            </td>
        </tr>
    <?php foreach ($category['items'] as $item): ?>     
        <tr>
            <td>
              <?php echo $item['name']; ?>
            </td>
        </tr>
    <?php endforeach; ?>
    </table>
<?php endforeach; ?>

您是否有理由將結果作為類而不是關聯數組獲取? FETCH_CLASS更改為FETCH_ASSOC將允許您將項目名稱直接添加到第一個查詢的結果,而無需使用臨時數組。

在該foreach循環中,您在語義上只有一個具有多個名稱的項目。 我認為這不是你想要做的,所以你應該寫下這樣的東西:

    foreach ($data['rowItem'] as $Item) {
       $temp_categories['item'][] = array('name' => $Item->name);
    }

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM