ऐसी कई गलत प्रथाएं हैं जिनके कारण आपको यह त्रुटि हुई है।
स्पष्ट रूप से, उपयोगकर्ता को डेटाबेस से विस्तारित करना एक गलत कदम है। साथ ही, संपूर्ण डेटाबेस वर्ग बेकार है क्योंकि यह कुछ भी उपयोगी नहीं करता है।
इसलिए मैं
. को सुझाव दूंगा- बेकार डेटाबेस वर्ग से छुटकारा पाएं।
- एक एकल बनाएं वेनिला mysqli से $db उदाहरण।
- इसे हर उस वर्ग में एक कंस्ट्रक्टर पैरामीटर के रूप में पास करें जिसे डेटाबेस कनेक्शन की आवश्यकता है
डेटाबेस.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']);