What are some best practices for handling user input in PHP to prevent security vulnerabilities like SQL injection?

To prevent security vulnerabilities like SQL injection in PHP, it is essential to sanitize and validate user input before using it in database queries. One way to do this is by using prepared statements with parameterized queries, which separate SQL code from user input, making it impossible for malicious input to alter the query structure.

// Establish a database connection
$pdo = new PDO('mysql:host=localhost;dbname=mydatabase', 'username', 'password');

// Prepare a SQL query using a parameterized statement
$stmt = $pdo->prepare('SELECT * FROM users WHERE username = :username');

// Bind the user input to the query parameters
$stmt->bindParam(':username', $_POST['username']);

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

// Fetch the results
$results = $stmt->fetchAll();