Using MySQLi from Another Class in PHP
Problem Description:
The question seeks assistance in accessing a MySQLi connection established in a separate class from within another class. A database class with a connection property is created, and an API class attempts to access this connection. However, attempts to access the connection result in an internal server error.
Answer:
Bad Practices and Recommendations:
The provided code contains several bad practices that contribute to the error:
It is recommended to:
Refactored Code:
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>
app.php:
<?php # require_once 'Database.php'; # require_once 'myapi.php'; require 'vendor/autoload.php'; // autoloading is essential $api = new MyAPI($db, $request_uri, $postData, $origin); $user = $api->getUser($_POST['id']);
By following these recommendations, it is possible to access the MySQLi connection from another class effectively and without errors.
The above is the detailed content of How Can I Properly Access a MySQLi Connection from a Separate Class in PHP?. For more information, please follow other related articles on the PHP Chinese website!