


How Can I Properly Access a MySQLi Connection from a Separate Class in PHP?
Dec 10, 2024 pm 04:22 PMUsing 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:
- Extending a class (User) from the Database class is inappropriate.
- The Database class lacks essential functionality.
It is recommended to:
- Eliminate the Database class as it serves no meaningful purpose.
- Create a single $db instance from vanilla mysqli.
- Pass this instance as a constructor argument to classes that require a database connection.
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!

Hot Article

Hot tools Tags

Hot Article

Hot Article Tags

Notepad++7.3.1
Easy-to-use and free code editor

SublimeText3 Chinese version
Chinese version, very easy to use

Zend Studio 13.0.1
Powerful PHP integrated development environment

Dreamweaver CS6
Visual web development tools

SublimeText3 Mac version
God-level code editing software (SublimeText3)

Hot Topics

Reduce the use of MySQL memory in Docker

How do you alter a table in MySQL using the ALTER TABLE statement?

How to solve the problem of mysql cannot open shared library

Run MySQl in Linux (with/without podman container with phpmyadmin)

What is SQLite? Comprehensive overview

Running multiple MySQL versions on MacOS: A step-by-step guide

How do I secure MySQL against common vulnerabilities (SQL injection, brute-force attacks)?

How do I configure SSL/TLS encryption for MySQL connections?
