Det finns flera dåliga metoder som ledde dig till det här felet.
Det är uppenbart att utvidgning av användare från en databas är ett felaktigt drag. Dessutom är hela databasklassen ganska värdelös eftersom den inte gör någonting användbart.
Därför skulle jag föreslå att
- bli av med den värdelösa databasklassen.
- skapa en singel $db-instans från vanilla mysqli.
- lägg in den som en konstruktorparameter till varje klass som behöver en databasanslutning
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']);