In the provided PHP code, what potential security vulnerabilities related to SQL injection should be addressed?
The provided PHP code is vulnerable to SQL injection attacks because it directly concatenates user input (in this case, $username) into the SQL query without any sanitization or parameterization. To address this vulnerability, you should use prepared statements with parameterized queries to prevent SQL injection attacks.
// Original vulnerable code
$username = $_POST['username'];
$query = "SELECT * FROM users WHERE username = '$username'";
$result = mysqli_query($connection, $query);
// Fixed code using prepared statements
$username = $_POST['username'];
$query = "SELECT * FROM users WHERE username = ?";
$stmt = mysqli_prepare($connection, $query);
mysqli_stmt_bind_param($stmt, "s", $username);
mysqli_stmt_execute($stmt);
$result = mysqli_stmt_get_result($stmt);