What are some best practices for securely handling user input in PHP MySQL queries?

When handling user input in PHP MySQL queries, it is crucial to use prepared statements with parameterized queries to prevent SQL injection attacks. This involves binding user input values to placeholders in the query before execution, which ensures that the input is treated as data rather than executable code.

// Establish a connection to the database
$mysqli = new mysqli("localhost", "username", "password", "database");

// Prepare a SQL statement with a parameterized query
$stmt = $mysqli->prepare("SELECT * FROM users WHERE username = ?");

// Bind user input to the query parameters
$username = $_POST['username'];
$stmt->bind_param("s", $username);

// Execute the query
$stmt->execute();

// Get the results
$result = $stmt->get_result();

// Process the results as needed
while ($row = $result->fetch_assoc()) {
    // Do something with the data
}

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