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
相关产品推荐
相关产品推荐

