How can prepared statements or PHP frameworks like phpactiverecord enhance security when interacting with databases in PHP?

Prepared statements or PHP frameworks like phpactiverecord can enhance security when interacting with databases in PHP by automatically escaping input data, preventing SQL injection attacks. This ensures that user input is treated as data rather than executable code, making it safer to use in database queries.

// Using prepared statements with PDO
$stmt = $pdo->prepare("SELECT * FROM users WHERE username = :username");
$stmt->bindParam(':username', $username);
$stmt->execute();
$results = $stmt->fetchAll();

// Using phpactiverecord
$user = User::find_by_username($username);