You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

MVC电商项目无法从数据库展示用户问题求助

电商网站MVC架构数据展示问题

我正在为学校项目开发电商网站,首次使用MVC架构。除无法从数据库展示产品和用户外,其余功能均正常。两类问题成因可能相同,这里仅提供用户模块代码(更简短):

index.php(会话、数据库连接、路由)

<?php
require_once __DIR__ . '/routers/switchrouter.php';
require_once __DIR__ . '/config/dbconfig.php'; 

// 若会话未启动则开启
if(!isset($_SESSION)){
    session_start();
    }

// 使用dbconfig.php中的变量创建mysqli实例
$conn = new mysqli($servername, $username, $password, $database);

if ($conn->connect_error) {
    die("数据库连接失败: " . $conn->connect_error);
}
//echo "Connected successfully";

$uri = trim($_SERVER['REQUEST_URI'], '/');

$router = new SwitchRouter($conn); // 直接将mysqli实例传入SwitchRouter构造函数
$router->route($uri);
?>

注:路由器代码与问题无关,暂不上传。

userrepository.php(数据库查询)

<?php

namespace Repositories;

require_once __DIR__ . '/repository.php';
require_once __DIR__ . '/../models/user.php';

use mysqli;

class UserRepository extends Repository
{
    function __construct(mysqli $conn)
    {
        parent::__construct($conn);
    }

    // 获取所有用户
    public function getAll()
    {
        $sqlquery = "SELECT * FROM USERS";

        $result = $this->connection->query($sqlquery);
        if ($result === false) {
            die("查询失败: " . $this->connection->error);
        }
        return $result->fetch_all(MYSQLI_ASSOC);
    }
?>

注:该查询语句直接在数据库执行有效。

userservice.php(业务逻辑)

<?php

namespace Services;

require_once __DIR__ . '/../repositories/userrepository.php';
require_once __DIR__ . '/../models/user.php';
use Repositories\UserRepository;
use mysqli;

class UserService {
    private $userRepository;

    function __construct(mysqli $conn) {
        $this->userRepository = new UserRepository($conn);
    }

    // 返回所有用户
    public function getAll() {
        return $this->userRepository->getAll();
    }
?>

控制器相关代码段

function usersView()
    {
        session_start();
        if (isset($_SESSION['role'])) {
            if ($_SESSION['role'] == Role::Admin) {
                $users = $this->userService->getAll();
                require '../../app/views/admin/users.php';
            }
        } else {
            $this->loginView();
        }
    }

注:登录、注册等其他功能正常。

用户视图文件

<?php
 require __DIR__ . '/../header.php';
?>

</header>
    <!-- 头部区域结束 -->

    <!-- 主内容区域开始 -->
    <main class="container">
        <section id="orders" class="mt-5">
            <h2>用户列表</h2>
            <table class="table table-striped">
                <thead>
                    <tr>
                        <th scope="col">ID</th>
                        <th scope="col">头像</th>
                        <th scope="col">姓名</th>
                        <th scope="col">邮箱</th>
                        <th scope="col">角色</th>
                        <th scope="col">操作</th>
                    </tr>
                </thead>
                <tbody>
                    <?php foreach ($users as $user) : ?>
                        <tr>
                            <td><?= $user->getId() ?></td>
                            <td><img src="<?= $user->getImage() ?>" alt="用户头像" width="50" height="50"></td>
                            <td><?= $user->getFullName() ?></td>
                            <td><?= $user->getEmail() ?></td>
                            <td><?= $user->getRoleName() ?></td>
                            <td>
                                <a href="/users/editView?editUser=<?= $user->getId() ?>" class="btn btn-primary">编辑</a>
                                <a href="/users/delete?deleteUser=<?= $user->getId() ?>" class="btn btn-danger">删除</a>
                            </td>

                        </tr>
                    <?php endforeach; ?>
                </tbody>
            </table>
        </section>
    </main>
    <!-- 主内容区域结束 -->

<?php
   require __DIR__ . '/../footer.php';
?>

调试结果

在视图中使用count($users)调试,发现$users的值为null。

内容的提问来源于stack exchange,提问作者MbareSimo

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.22 09:44:56