What are the best practices for handling user input and form data in PHP to prevent SQL injection attacks?

To prevent SQL injection attacks when handling user input and form data in PHP, it is essential to use parameterized queries with prepared statements. This approach ensures that user input is properly sanitized and treated as data rather than executable SQL code. By using prepared statements, you can separate the SQL query from the user input, making it impossible for malicious input to alter the query's logic.

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

// Prepare a SQL statement with a placeholder
$stmt = $pdo->prepare("SELECT * FROM users WHERE username = :username");

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

// Execute the prepared statement
$stmt->execute();

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