簡體   English   中英

PHP內部聯接類別

[英]PHP inner join categories

我被PHP卡住了,我試圖加入兩個表

$statement = $database->prepare("SELECT categories.name as category_name ,pages.name as page_name FROM categories INNER JOIN pages ON categories.name = pages.category");
$statement->execute();
$fetch = $statement->fetchAll(PDO::FETCH_ASSOC);

$returnValues = '';
foreach($fetch as $item){
    if(isset($returnValue[$item->category_name]){
        array_push($returnValue[$item->category_name], $item->page_name);
    }else{
        $returnValue[$item->category_name][] = $item->page_name;
    }
}
echo "<pre>";
print_r($returnValue);

基本上,我想獲得一個數組,該數組具有類別名稱,並在其后包含該類別的所有頁面。 現在在此PHP代碼上,我得到了很多數組,每個人都擁有類別名稱和一頁。.我無法對其進行分類,謝謝。

別名類別名稱,以便您可以區分頁面名稱。 該查詢將選擇類別名稱和表頁面中的所有列。

$statement = $database->prepare("SELECT categories.name AS category_name, pages.* FROM categories INNER JOIN pages ON categories.name = pages.category");
$statement->execute();
$fetch = $statement->fetchAll(PDO::FETCH_ASSOC);

將每行按類別名稱分組。 將$ row ['id']更改為用作表頁面的主要ID的任何內容。

$categoryPages = array();
foreach ( $fetch as $row ) {
    $categoryPages[$row['category_name']][$row['id']] = $row;
}
print_r($categoryPages);

這是對原始代碼的修改,基本上應該做您想做的事,可能需要一些小的語法更改。

$statement = $database->prepare("SELECT categories.name as category_name ,pages.name as page_name FROM categories INNER JOIN pages ON categories.name = pages.category");
$statement->execute();
$fetch = $statement->fetchAll(PDO::FETCH_ASSOC);

$returnValues = '';
foreach($fetch as $item){
    if(isset($returnValue[$item->category_name]){
        array_push($returnValue[$item->category_name], $item->page_name);
    }else{
        $returnValue[$item->category_name][] = $item->page_name;
    }
}
echo "<pre>";
print_r($returnValue);

這樣的事情可能對您有用...我知道它並不完美,查詢准備中缺少一些東西,但足以使您順利進行。

編譯后的數組應采用所需的格式。

$statement = $database->prepare("SELECT categories.name FROM categories");
$statement->execute();
$fetch = $statement->fetchAll(PDO::FETCH_ASSOC);

$compiled = '';
foreach($fetch as $category){
    $statement = $database->prepare("SELECT page.name FROM pages WHERE pages.category = $category");
    $statement->execute();
    $pages = $statement->fetchAll(PDO::FETCH_ASSOC);
    foreach($pages as $page)
        array_push($compiled[$category], $page);
    }
}
echo "<pre>";
print_r($compiled);

暫無
暫無

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

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