Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/291.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 显示类别表及其下的相关页面_Php_Mysqli - Fatal编程技术网

Php 显示类别表及其下的相关页面

Php 显示类别表及其下的相关页面,php,mysqli,Php,Mysqli,我想对它进行组织,这样它就可以循环出类别的名称以及与特定类别相关的页面的名称,这些页面位于li列表中的neat下 数据库中的代码和表: 例如: 法律职业GDPR 此时此刻,它表现为: 使用PDO,这变得非常简单。下面是一个带有单个查询的示例。我从SQL中获取数据,然后根据第一列(类别名称)对其进行分组 <?php $pdo = new \PDO("mysql:host=localhost;dbname=test;charset=utf8mb4", 'user', '

我想对它进行组织,这样它就可以循环出类别的名称以及与特定类别相关的页面的名称,这些页面位于li列表中的neat下

数据库中的代码和表:

例如:

法律职业GDPR

此时此刻,它表现为:


使用PDO,这变得非常简单。下面是一个带有单个查询的示例。我从SQL中获取数据,然后根据第一列(类别名称)对其进行分组

<?php

$pdo = new \PDO("mysql:host=localhost;dbname=test;charset=utf8mb4", 'user', 'password', [
    \PDO::ATTR_ERRMODE => \PDO::ERRMODE_EXCEPTION,
    \PDO::ATTR_EMULATE_PREPARES => false
]);

$data = $pdo->query("SELECT catname, name 
    FROM pagecat 
    INNER JOIN pages ON pagecat.id=pages.pagecat 
    ORDER BY pages.pagecat")->fetchAll(\PDO::FETCH_GROUP);

?>
<ul>
    <?php foreach ($data as $name => $pages):?>
        <b><?= $name ?></b>
        <?php foreach ($pages as $page): ?>
            <li><?=$page['name'] ?></li>
        <?php endforeach; ?>
    <?php endforeach; ?>
</ul>

代码已经添加到名为pagecat或category的POST表中?您使用mysqli而不是PDO的原因是否充分?这类事情在PDOI中要容易得多,就像使用名为PageCat的MySQlliits。首先,不要在网上共享密码。我只是把连接线,使该示例准备好复制和粘贴。你应该用你现有的连接替换连接代码啊,好的,呵呵,非常感谢你的帮助:DI发现了一个小问题,所有类别和页面都放在名为的div中,但我希望所有类别/页面都放在一个单独的div中,如下所示:`Category name page name`在我的示例中没有div,但是如果您想添加它,那么这不是问题。只需将其添加到第一个循环中
<?php

$pdo = new \PDO("mysql:host=localhost;dbname=test;charset=utf8mb4", 'user', 'password', [
    \PDO::ATTR_ERRMODE => \PDO::ERRMODE_EXCEPTION,
    \PDO::ATTR_EMULATE_PREPARES => false
]);

$data = $pdo->query("SELECT catname, name 
    FROM pagecat 
    INNER JOIN pages ON pagecat.id=pages.pagecat 
    ORDER BY pages.pagecat")->fetchAll(\PDO::FETCH_GROUP);

?>
<ul>
    <?php foreach ($data as $name => $pages):?>
        <b><?= $name ?></b>
        <?php foreach ($pages as $page): ?>
            <li><?=$page['name'] ?></li>
        <?php endforeach; ?>
    <?php endforeach; ?>
</ul>
<?php

mysqli_report(MYSQLI_REPORT_ERROR | MYSQLI_REPORT_STRICT);
$mysqli = new mysqli('localhost', 'user', 'password', 'test');
$mysqli->set_charset('utf8mb4'); // always set the charset

$pagesWithCategories = $mysqli->query("SELECT catname, name 
    FROM pagecat 
    INNER JOIN pages ON pagecat.id=pages.pagecat 
    ORDER BY pages.pagecat");

$data = [];
foreach ($pagesWithCategories as $page) {
    $data[$page['catname']][] = $page;
}

?>
<ul>
    <?php foreach ($data as $name => $pages):?>
        <b><?= $name ?></b>
        <?php foreach ($pages as $page): ?>
            <li><?=$page['name'] ?></li>
        <?php endforeach; ?>
    <?php endforeach; ?>
</ul>