In what scenarios would it be beneficial to use multiple instances of a DatabaseConnection class in PHP, and how can this be managed effectively to prevent issues with database connections?

When dealing with multiple databases or different database connections in PHP, it can be beneficial to use multiple instances of a DatabaseConnection class to handle each connection separately. This can help in scenarios where you need to interact with multiple databases or have different configurations for each connection. To manage multiple instances effectively and prevent issues with database connections, you can encapsulate each connection in its own instance of the DatabaseConnection class and ensure proper handling of opening and closing connections.

class DatabaseConnection {
    private $connection;

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

        if ($this->connection->connect_error) {
            die("Connection failed: " . $this->connection->connect_error);
        }
    }

    public function query($sql) {
        return $this->connection->query($sql);
    }

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

// Example of using multiple instances of DatabaseConnection
$connection1 = new DatabaseConnection('localhost', 'user1', 'password1', 'database1');
$connection2 = new DatabaseConnection('localhost', 'user2', 'password2', 'database2');

// Query using the first connection
$result1 = $connection1->query("SELECT * FROM table1");

// Query using the second connection
$result2 = $connection2->query("SELECT * FROM table2");

// Close connections
$connection1->close();
$connection2->close();