How can PHP developers ensure the proper sanitization and validation of user input to prevent SQL injection attacks?

To prevent SQL injection attacks, PHP developers can use prepared statements with parameterized queries to properly sanitize and validate user input. This method separates the SQL query logic from the user input, making it impossible for malicious input to interfere with the query execution.

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

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

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

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

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