In what situations should prepared statements be used instead of directly inserting data into a MySQL database in PHP?

Prepared statements should be used instead of directly inserting data into a MySQL database in PHP when dealing with user input or dynamic data to prevent SQL injection attacks. Prepared statements help separate SQL logic from data input, providing a safer and more efficient way to interact with a database.

// Using prepared statements to insert data into a MySQL database
$pdo = new PDO("mysql:host=localhost;dbname=mydatabase", "username", "password");

$stmt = $pdo->prepare("INSERT INTO users (username, email) VALUES (:username, :email)");
$stmt->bindParam(':username', $username);
$stmt->bindParam(':email', $email);

$username = "john_doe";
$email = "john.doe@example.com";
$stmt->execute();