我被困在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代码上,我得到了大量的数组,每个人都拥有类别名称和一个页面..我无法解决它,谢谢。
答案 0 :(得分:1)
别名类别名称,以便您可以将其与页面名称区分开来。此查询将从表页中选择类别名称和所有列。
$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 [&#39; id&#39;]更改为您用作表格页面主要ID的任何内容。
$categoryPages = array();
foreach ( $fetch as $row ) {
$categoryPages[$row['category_name']][$row['id']] = $row;
}
print_r($categoryPages);
答案 1 :(得分:0)
这是对原始代码的修改,基本上应该按照您的意愿执行,可能需要进行一些小的语法更改。
$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);