What are some best practices for securely accessing a database in PHP, especially when dealing with automated scripts?

When accessing a database in PHP, especially with automated scripts, it is crucial to securely handle database credentials to prevent unauthorized access. One best practice is to store database credentials in a separate configuration file outside the document root and include it in your PHP scripts. Additionally, use prepared statements or parameterized queries to prevent SQL injection attacks.

// Include the database configuration file
include 'config.php';

// Establish a connection to the database
$mysqli = new mysqli(DB_HOST, DB_USER, DB_PASS, DB_NAME);

// Check for connection errors
if ($mysqli->connect_error) {
    die("Connection failed: " . $mysqli->connect_error);
}

// Use prepared statements to securely query the database
$stmt = $mysqli->prepare("SELECT * FROM users WHERE username = ?");
$stmt->bind_param("s", $username);
$stmt->execute();
$result = $stmt->get_result();

// Process the query result
while ($row = $result->fetch_assoc()) {
    // Handle the retrieved data
}

// Close the database connection
$stmt->close();
$mysqli->close();