致命错误:无法重新声明类数据库.如何修复


Fatal error: Cannot redeclare class Database. How to fix?

我看到了这个问题,但我不太清楚答案。我的代码是.

index.php

 <?php include 'header.php'; ?>
    <?php
      include "class.users.php";
      if(isset($_POST['login'])) {
        $username = $_POST['username1'];
        $password = $_POST['password1'];
        $users->login($username, $password);
      }
    ?>

class.users.php

<?php
  include "connect.php";
  class Users extends Database {
    public function login($username, $password) {
      $stmt = $this->mysqli->prepare("SELECT username, password FROM users WHERE username = ? AND password = ? LIMIT 1");
      $stmt->bind_param('ss', $username, $password);
      $stmt->execute();
      $stmt->bind_result($username, $password);
      $stmt->store_result();
      if($stmt->num_rows == 1) {
        while($stmt->fetch()) {
          $_SESSION['username'] == $username;
          header("Location: dashboard.php");
        }
      } else {
          return false;
      }
      $stmt->close();
      $stmt->free_result();
    }
  }
  $users = new users();
?>

connect.php

<?php
    class Database {
      public function __construct() {
        $host = 'localhost';
        $user = 'root';
        $pass = '';
        $name = 'meeboo3';
        $this->mysqli = new mysqli($host, $user, $pass, $name);
      }
    }
    ?>

类数据库没有调用两次?那么,这怎么会是一个错误呢?有人能在评论中解释原因吗。

您可以测试它在声明之前是否已经声明:

if (!isset($database) && !is_a($database, 'Database')){
  $database = new Database();
}

如果你在connect.php中声明它,你可以:

include_once 'connect.php';

而不是

include 'connect.php';