Có một số phương pháp không tốt đã dẫn bạn đến lỗi này.
Rõ ràng, việc mở rộng Người dùng khỏi Cơ sở dữ liệu là một động thái sai lầm. Ngoài ra, toàn bộ lớp Cơ sở dữ liệu khá vô dụng vì nó không có ích gì.
Do đó tôi muốn đề xuất
- loại bỏ lớp Cơ sở dữ liệu vô dụng.
- tạo một đơn Phiên bản $ db từ mysqli vani.
- chuyển nó dưới dạng tham số khởi tạo vào mọi lớp cần kết nối cơ sở dữ liệu
database.php:
<?php
mysqli_report(MYSQLI_REPORT_ERROR | MYSQLI_REPORT_STRICT);
$db = new mysqli("localhost", "DBUserName", "UserPassword", "SelectedDB");
$db->set_charset('utf8mb4');
myapi.php
<?php
class MyAPI
{
protected $db;
public function __construct($db, $request_uri, $postData, $origin)
{
$this->db = $db;
}
public function getUser($id)
{
$sql = "SELECT * FROM users where id=?";
$stmt = $this->db->prepate($sql);
$stmt->bind_param("s", $id);
$stmt->execute();
$result = $stmt->get_result();
return $result->fetch_assoc();
}
}
app.php
<?php
# require_once 'Database.php';
# require_once 'myapi.php';
require 'vendor/autoload.php'; // autoloading is a must
$api = new MyAPI($db, $request_uri, $postData, $origin);
$user = $api->getUser($_POST['id']);