How can SQL injection vulnerabilities be prevented in PHP scripts, especially when dealing with user input?

SQL injection vulnerabilities can be prevented in PHP scripts by using prepared statements with parameterized queries. This approach ensures that user input is treated as data rather than executable code, thus preventing malicious SQL injections.

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

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

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

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

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