Bonjour,
J'aimerais enregistrer ces informations dans la base de donnée si seulement si elles n'existent pas déjà celle-ci. Mais je constate que ça refuse malgré que ça n'existent pas dans ma bdd. : Ces informations existent déjà

        $stmt = $pdo->prepare('SELECT COUNT(*) FROM client WHERE username = :username AND compte = :compte AND code1 = :code1 AND code2 = :code2 AND code3 = :code3');
        $stmt->execute(array( 
            'username' => $username,
            'compte' => $compte,
            'code1' => $code1,
            'code2' => $code2,
            'code3' => $code3
        ));
        if ($stmt->fetchAll() == 0){
            $query = $pdo->prepare('INSERT INTO client (nom, prenom, username, compte, password, code1, code2) VALUES (:nom, :prenom, :username, :compte, :password, :code1, :code2, :code3)');
            $query->execute(array(
                'nom' => $nom,  'prenom' => $prenom, 'username' => $username, 'compte' => $compte, 'password' => $password, 'code1' => $code1, 'code2' => $code2, 'code' => $code3
            )); 
            header("Location: login.php");
        } else {
            $error = true;
            $champsexisteError = "Ces informations existent déja .";
        }

5 réponses


Salut,

        $stmt = $pdo->prepare('SELECT COUNT(*) as nb FROM client WHERE username = :username AND compte = :compte AND code1 = :code1 AND             code2 = :code2 AND code3 = :code3');
        $rows = $stmt->execute(array( 
            'username' => $username,
            'compte' => $compte,
            'code1' => $code1,
            'code2' => $code2,
            'code3' => $code3
        ))->fetc(PDO::FETCH_OBJ);
        if ($rows->nb == 0){
            $query = $pdo->prepare('INSERT INTO client (nom, prenom, username, compte, password, code1, code2) VALUES (:nom, :prenom, :username, :compte, :password, :code1, :code2, :code3)');
            $query->execute(array(
                'nom' => $nom,  'prenom' => $prenom, 'username' => $username, 'compte' => $compte, 'password' => $password, 'code1' => $code1, 'code2' => $code2, 'code' => $code3
            )); 
            header("Location: login.php");
        } else {
            $error = true;
            $champsexisteError = "Ces informations existent déja .";
        }

Comme ça, peut être que ça fonctionnera mieux.
@plus
Pierre

iamlouky
Auteur

Il y a erreur sur la ligne de $rows = $stmt->execute

Notice: Undefined variable: rows in C:\wamp\www\On\authentification\inscription.php on line 48

Fatal error: Call to a member function execute() on a non-object in C:\wamp\www\On\authentification\inscription.php on line 48

j'ai fait ça à l'arrache de mon tel, alors, c'est pas évident ;)
Mais, au lieu de te contenter de faire un copier/coller fais un effort ;)
j'aurais appeller une methode turlututu_chapeau_pointu, te serais tu posé la question ?
allééééé, réfléchis un peu !!!!! :D :D
@pluche
Pierre

oui, en plus, faut remettre en ordre :D

@plus

Pierre

Bonjour.
Au lieu de venir nous demander de l'aide à tout bout de champs, tu devrais commencer à t'habituer à debugguer ton code lorsque tu rencontres un problème avant de venir nous solliciter.
C'est relativement agaçant que tu viennes nous demander de l'aide dès que tu rencontres un problème avec tes requêtes pour la base de données, sans faire le minimum de ton côté pour comprendre ce qui peut se passer.
Au passage, penses à relire ton code.
Dans ta requête d'insertion, tu veux sauvegarder dans 7 champs, mais tu définis 8 valeurs.
En plus de ça, lors de la méthode execute, au lieu de définir une valeur pour le paramètre code3, tu définies une valeur pour un paramètre code inexistant dans ta requête.