How can one properly handle context switching in PHP when dealing with user input and database queries?

When handling user input and database queries in PHP, it is important to properly handle context switching to prevent security vulnerabilities such as SQL injection attacks. One way to do this is by using prepared statements with parameterized queries to separate the SQL logic from the user input. This helps to sanitize the input and prevent malicious code from being executed.

// Example of using prepared statements to handle user input and database queries safely
$pdo = new PDO('mysql:host=localhost;dbname=mydatabase', 'username', 'password');

// User input
$user_input = $_POST['user_input'];

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

// Bind parameters
$stmt->bindParam(':username', $user_input);

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

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

// Loop through the results
foreach ($results as $row) {
    echo $row['username'] . '<br>';
}