In what ways can the code snippet be improved for better security against SQL injections?

The code snippet can be improved by using prepared statements with parameterized queries to prevent SQL injections. Prepared statements separate SQL code from user input, making it impossible for an attacker to inject malicious SQL code. By using prepared statements, the database engine can distinguish between SQL code and data, effectively preventing SQL injection attacks.

// Improved code with prepared statements to prevent SQL injection
$mysqli = new mysqli("localhost", "username", "password", "database");

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

$stmt = $mysqli->prepare("SELECT * FROM users WHERE username = ?");
$stmt->bind_param("s", $username);

$username = $_POST['username'];
$stmt->execute();

$result = $stmt->get_result();
while ($row = $result->fetch_assoc()) {
    // Process the retrieved data
}

$stmt->close();
$mysqli->close();