How can object-oriented programming principles be applied effectively in PHP when working with databases?

When working with databases in PHP, object-oriented programming principles can be applied effectively by creating classes that represent database entities (e.g., tables) and using objects to interact with the database. This approach helps in organizing code, promoting reusability, and enhancing maintainability.

// Example of applying object-oriented programming principles in PHP when working with databases

class User {
    private $conn;

    public function __construct($conn) {
        $this->conn = $conn;
    }

    public function getUserById($id) {
        $stmt = $this->conn->prepare("SELECT * FROM users WHERE id = ?");
        $stmt->bind_param("i", $id);
        $stmt->execute();
        $result = $stmt->get_result();
        return $result->fetch_assoc();
    }

    public function updateUser($id, $name, $email) {
        $stmt = $this->conn->prepare("UPDATE users SET name = ?, email = ? WHERE id = ?");
        $stmt->bind_param("ssi", $name, $email, $id);
        $stmt->execute();
        return $stmt->affected_rows;
    }
}

// Usage
$conn = new mysqli("localhost", "username", "password", "database");
$user = new User($conn);

$userData = $user->getUserById(1);
echo "User Name: " . $userData['name'];

$updatedRows = $user->updateUser(1, "John Doe", "john.doe@example.com");
echo "Updated rows: " . $updatedRows;

$conn->close();