I cannot insert data into my database via a php code

<?php 
require_once 'config.php'; // On inclu la connexion à la bdd

// Si les variables existent et qu'elles ne sont pas vides
if(!empty($_POST['username']) && !empty($_POST['email']) && !empty($_POST['password']) && !empty($_POST['cpassword']))
{
    // Patch XSS
    $username = $_POST['username'];
    $email = $_POST['email'];
    $password = htmlspecialchars($_POST['password']);
    $cpassword = htmlspecialchars($_POST['cpassword']);

    // On vérifie si l'utilisateur existe
    $check = $bdd->prepare('SELECT username, email, password FROM users WHERE email = ?');
    $check->execute(array($email));
    $data = $check->fetch();
    $row = $check->rowCount();
    
    // On vérifie si le pseudo existe
    $check_psd = $bdd->prepare("SELECT username FROM users WHERE username= ?");
    $check_psd->execute([$username]); 
    $check_username = $check_psd->fetch();

    $email = strtolower($email); // on transforme toute les lettres majuscule en minuscule pour éviter que [email protected] et [email protected] soient deux compte différents ..
    
    // Si la requete renvoie un 0 alors l'utilisateur n'existe pas 
    if($row == 0){ 
        if($check_username == 0){
            if(strlen($email) <= 100){ // On verifie que la longueur du mail <= 100
                if(filter_var($email, FILTER_VALIDATE_EMAIL)){ // Si l'email est de la bonne forme
                    if($password === $cpassword){ // si les deux mdp saisis sont bon

                        // On hash le mot de passe avec Bcrypt, via un coût de 12
                        $cost = ['cost' => 12];
                        $password = password_hash($password, PASSWORD_BCRYPT, $cost);
                        
                        // On stock l'adresse IP
                        $ip = $_SERVER['REMOTE_ADDR']; 

                        // On insère dans la base de données
                        $insert = $bdd->prepare('INSERT INTO users(username, email, password, ip, token) VALUES(:username, :email, :password, :ip, :token)');
                        $insert->execute(array(
                            'username' => $username,
                            'email' => $email,
                            'password' => $password,
                            'ip' => $ip,
                            'token' => bin2hex(openssl_random_pseudo_bytes(64))
                        ));
                        // On redirige avec le message de succès
                        header('Location:inscription.php?reg_err=success');
                        die();
                    }else{ header('Location: inscription.php?reg_err=password'); die();}
                }else{ header('Location: inscription.php?reg_err=email'); die();}
            }else{ header('Location: inscription.php?reg_err=email_length'); die();}
        }else{ header('Location: inscription.php?reg_err=username_already'); die();}
    }else{ header('Location: inscription.php?reg_err=already'); die();}
}