What are the best practices for structuring PHP scripts to separate database connections and code from HTML output?

To separate database connections and code from HTML output in PHP scripts, it is recommended to use a design pattern such as MVC (Model-View-Controller). This involves creating separate files for database connections and queries (Model), business logic (Controller), and HTML output (View). By organizing your code in this way, it becomes easier to maintain, debug, and scale your application.

// database.php
<?php
$host = 'localhost';
$username = 'root';
$password = '';
$database = 'my_database';

$conn = new mysqli($host, $username, $password, $database);
if ($conn->connect_error) {
    die("Connection failed: " . $conn->connect_error);
}
```

```php
// model.php
<?php
include 'database.php';

function get_users() {
    global $conn;
    
    $sql = "SELECT * FROM users";
    $result = $conn->query($sql);
    
    if ($result->num_rows > 0) {
        return $result->fetch_all(MYSQLI_ASSOC);
    } else {
        return [];
    }
}
```

```php
// controller.php
<?php
include 'model.php';

$users = get_users();
```

```php
// view.php
<?php
include 'controller.php';

foreach ($users as $user) {
    echo $user['name'] . "<br>";
}