What best practices should be followed when handling database queries in PHP to avoid integrity constraint violations?

To avoid integrity constraint violations when handling database queries in PHP, it is important to properly handle errors and exceptions that may arise during database operations. This includes using prepared statements to prevent SQL injection attacks, validating user input before executing queries, and utilizing transactions to ensure data consistency.

try {
    $pdo = new PDO("mysql:host=localhost;dbname=mydatabase", "username", "password");
    $pdo->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);

    $pdo->beginTransaction();

    $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();

    $pdo->commit();
} catch (PDOException $e) {
    $pdo->rollBack();
    echo "Error: " . $e->getMessage();
}