How can custom-written database classes in PHP impact the closing of MySQL connections and lead to warning messages like "39 is not a valid MySQL-Link"?

When custom-written database classes in PHP do not properly handle closing MySQL connections, it can lead to warning messages like "39 is not a valid MySQL-Link" due to attempting to use a closed connection. To solve this issue, ensure that connections are properly closed after they are no longer needed within the custom database class.

class CustomDatabase {
    private $connection;

    public function __construct($host, $username, $password, $database) {
        $this->connection = new mysqli($host, $username, $password, $database);
    }

    public function query($sql) {
        // Perform query using $this->connection
    }

    public function closeConnection() {
        $this->connection->close();
    }

    public function __destruct() {
        $this->closeConnection();
    }
}

// Example usage
$db = new CustomDatabase("localhost", "username", "password", "database");
$results = $db->query("SELECT * FROM table");
unset($db); // This will trigger the __destruct method and close the connection