How can prepared statements improve the security of PHP code when interacting with databases?

Prepared statements can improve the security of PHP code when interacting with databases by preventing SQL injection attacks. By using placeholders for dynamic data and binding parameters to those placeholders, prepared statements ensure that user input is treated as data, not executable code. This helps to protect against malicious input that could manipulate the SQL query.

// Example of using prepared statements to interact with a MySQL database

// Establish a connection to the database
$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 a parameter to the placeholder
$stmt->bindParam(':username', $username);

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

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