Je n'arrive pas a un faire un INSERT INTO [Résolu]

Signaler
Messages postés
38
Date d'inscription
lundi 19 octobre 2020
Statut
Membre
Dernière intervention
28 janvier 2021
-
Messages postés
31579
Date d'inscription
mercredi 22 octobre 2003
Statut
Modérateur
Dernière intervention
4 mars 2021
-
Bonjour, ca fait 1 semaine je suis bloque parce que je n'arrive pas a faire un insert dans ma bdd, j'ai essaye tout les solutions , mais aucun résultat je suis a bout.
Aider moi svp ...

Voici l'erreur que ca m'affiche :

( ! ) Fatal error: Uncaught PDOException: SQLSTATE[21S01]: Insert value list does not match column list: 1136 Column count doesn't match value count at row 1 in C:\wamp64\www\html\ltr\vertical-menu-template-semi-dark\php\insert.php on line 65

( ! ) PDOException: SQLSTATE[21S01]: Insert value list does not match column list: 1136 Column count doesn't match value count at row 1 in C:\wamp64\www\html\ltr\vertical-menu-template-semi-dark\php\insert.php on line 65
Call Stack
# Time Memory Function Location
1 0.0035 418160 {main}( ) ...\insert.php:0
2 0.0056 472496 execute ( ) ...\insert.php:65

et voici mon code php :

<?php
    
error_reporting(E_ALL);
ini_set('display_errors', TRUE);
ini_set('display_startup_errors', TRUE);


    try{
        $bdd =new PDO('mysql:host=localhost;
        dbname=u243663731_; charset=utf8', 'root', '');
            // Activation des erreurs PDO
         $bdd->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
            // mode de fetch par défaut : FETCH_ASSOC / FETCH_OBJ / FETCH_BOTH
        $bdd->setAttribute(PDO::ATTR_DEFAULT_FETCH_MODE, PDO::FETCH_ASSOC);
}   catch(PDOException $e) {
         die('Erreur : ' . $e->getMessage());
}
    if(isset($_GET['dte'])){    
        
            $numerosdevis = htmlspecialchars($_GET['numerosdevis']);
            $dte = htmlspecialchars($_GET['dte']);
            $dateecheance = htmlspecialchars($_GET['dateecheance']);
            $nomproduit = htmlspecialchars($_GET['nomproduit']);
            $devispour = htmlspecialchars($_GET['devispour']);
            $adresse = htmlspecialchars($_GET['adresse']);
            $email = htmlspecialchars($_GET['email']);
            $tel = htmlspecialchars($_GET['tel']);
            $departement = htmlspecialchars($_GET['departement']);
            $article = htmlspecialchars($_GET['article']);
            $referencearticle = htmlspecialchars($_GET['referencearticle']);
            $cout = htmlspecialchars($_GET['cout']);
            $quantite = htmlspecialchars($_GET['quantite']);
            $remise = htmlspecialchars($_GET['remise']);
            $tax1 = htmlspecialchars($_GET['tax1']);
            $tax2 = htmlspecialchars($_GET['tax2']);
            $modalite = htmlspecialchars($_GET['modalite']);
            $monnaie = htmlspecialchars($_GET['monnaie']);
            $note = htmlspecialchars($_GET['note']);
            $statut = htmlspecialchars($_GET['statut']);
            $etiquette = htmlspecialchars($_GET['etiquette']);


            $statement = $bdd->prepare("INSERT INTO devis (numerosdevis, dte, dateecheance, nomproduit, devispour, adresse, email, tel, departement, article, referencearticle, cout, quantite, remise, tax1, tax2, modalite, monnaie, note, statut, etiquette) VALUES (':numerosdevis, :dte, :dateecheance, :nomproduit, :devispour, :adresse, :email, :tel, :departement, :article, :referencearticle, :cout, :quantite, :remise, :tax1, :tax2, :modalite, :monnaie, :note, :statut :etiquette')");
            $statement->execute([
                "numerosdevis" => "$numerosdevis",
                "dte" => $dte,
                "dateecheance" => "$dateecheance",
                "nomproduit" => "$nomproduit",
                "devispour" => "$devispour",
                "adresse" => "$adresse",
                "email" => "$email",
                "tel" => "$tel",
                "departement" => "$departement",
                "article" => "$article",
                "referencearticle" => "$referencearticle",
                "cout" => "$cout",
                "quantite" => "$quantite",
                "remise" => "$remise",
                "tax1" => "$tax1",
                "tax2" => "$tax2",
                "modalite" => "$modalite",
                "monnaie" => "$monnaie",
                "note" => "$note",
                "statut" => "$statut",
                "etiquette" => "$etiquette"
    ]);

    echo"ok";
            }
    
?>


Voici aussi les données de la barre de navigation :

insert.php?numerosdevis=002&dte=10%2F11%2F2020&dateecheance=10%2F22%2F2020&nomproduit=Decoration&devispour=Deco.com&adresse=blablabla&departement=93000&email=Monentreprise%40gmail.com&tel=06.06.07.07.00&article=OBJT1&cout=1&quantite=1&referencearticle=E132134F&remise=50&tax1=18%25&tax2=18%25&modalite=CB&monnaie=€¬e=Petit+cadeau&statut=NON+PAYE&etiquette=Décoration&insert=Sauvegarder

et pour finir la table de ma bdd :





S'il vous plais aider moi je suis meme pret a payer ...

4 réponses

Messages postés
31579
Date d'inscription
mercredi 22 octobre 2003
Statut
Modérateur
Dernière intervention
4 mars 2021
3 295
Déjà... htmlspecialchar ne s'uitilise QUE pour l'affichage ... pas pour faire de l'insertion en BDD

Ensuite, si tu regardes ta requête,
INSERT INTO devis (numerosdevis, dte, dateecheance, nomproduit, devispour, adresse, email, tel, departement, article, referencearticle, cout, quantite, remise, tax1, tax2, modalite, monnaie, note, statut, etiquette) VALUES (':numerosdevis, :dte, :dateecheance, :nomproduit, :devispour, :adresse, :email, :tel, :departement, :article, :referencearticle, :cout, :quantite, :remise, :tax1, :tax2, :modalite, :monnaie, :note, :statut :etiquette')

tu as des quotes en trop ... et tu as oublié une virgule devant la dernière variable


Au passage, n'éhsites pas à mettre des retours à la lignes .. ça rend la requête plus lisible
par exemple ( toujours avec les erreurs que je ne t'ai pas corrigé )
INSERT INTO devis (
            numerosdevis
          , dte
          , dateecheance
          , nomproduit
          , devispour
          , adresse
          , email
          , tel
          , departement
          , article
          , referencearticle
          , cout
          , quantite
          , remise
          , tax1
          , tax2
          , modalite
          , monnaie
          , note
          , statut
          , etiquette
) VALUES (
          ':numerosdevis
          , :dte
          , :dateecheance
          , :nomproduit
          , :devispour
          , :adresse
          , :email
          , :tel
          , :departement
          , :article
          , :referencearticle
          , :cout
          , :quantite
          , :remise
          , :tax1
          , :tax2
          , :modalite
          , :monnaie
          , :note
          , :statut :etiquette'
)


Messages postés
38
Date d'inscription
lundi 19 octobre 2020
Statut
Membre
Dernière intervention
28 janvier 2021

que voulez vous dire par trop de quotes et j'ai remarque pour la vigule , mais ca n'a toujours pas changer l'erreur.

( ! ) Fatal error: Uncaught PDOException: SQLSTATE[21S01]: Insert value list does not match column list: 1136 Column count doesn't match value count at row 1 in C:\wamp64\www\html\coqpix\php\insert.php on line 108
( ! ) PDOException: SQLSTATE[21S01]: Insert value list does not match column list: 1136 Column count doesn't match value count at row 1 in C:\wamp64\www\html\coqpix\php\insert.php on line 108
Call Stack
# Time Memory Function Location
1 0.0313 417616 {main}( ) ...\insert.php:0
2 0.0337 469680 execute ( ) ...\insert.php:108

mon code avec les modifications :

<?php
    
error_reporting(E_ALL);
ini_set('display_errors', TRUE);
ini_set('display_startup_errors', TRUE);


    try{
        $bdd =new PDO('mysql:host=localhost;
        dbname=u243663731_; charset=utf8', 'root', '');
            // Activation des erreurs PDO
         $bdd->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
            // mode de fetch par défaut : FETCH_ASSOC / FETCH_OBJ / FETCH_BOTH
        $bdd->setAttribute(PDO::ATTR_DEFAULT_FETCH_MODE, PDO::FETCH_ASSOC);
}   catch(PDOException $e) {
         die('Erreur : ' . $e->getMessage());
}
    if(isset($_GET['dte'])){    
        
            $numerosdevis = ($_GET['numerosdevis']);
            $dte = ($_GET['dte']);
            $dateecheance = ($_GET['dateecheance']);
            $nomproduit = ($_GET['nomproduit']);
            $devispour = ($_GET['devispour']);
            $adresse = ($_GET['adresse']);
            $email = ($_GET['email']);
            $tel = ($_GET['tel']);
            $departement = ($_GET['departement']);
            $article = ($_GET['article']);
            $referencearticle = ($_GET['referencearticle']);
            $cout = ($_GET['cout']);
            $quantite = ($_GET['quantite']);
            $remise = ($_GET['remise']);
            $tax1 = ($_GET['tax1']);
            $tax2 = ($_GET['tax2']);
            $modalite = ($_GET['modalite']);
            $monnaie = ($_GET['monnaie']);
            $note = ($_GET['note']);
            $statut = ($_GET['statut']);
            $etiquette = ($_GET['etiquette']);


            $statement = $bdd->prepare("INSERT INTO devis (numerosdevis,
            dte,
            dateecheance,
            nomproduit,
            devispour,
            adresse,
            email,
            tel,
            departement,
            article,
            referencearticle,
            cout,
            quantite,
            remise,
            tax1,
            tax2,
            modalite,
            monnaie,
            note,
            statut,
            etiquette) VALUES ('
            :numerosdevis,
            :dte,
            :dateecheance,
            :nomproduit,
            :devispour,
            :adresse,
            :email,
            :tel,
            :departement,
            :article,
            :referencearticle,
            :cout,
            :quantite,
            :remise,
            :tax1,
            :tax2,
            :modalite,
            :monnaie,
             :note,
            :statut,
            :etiquette')");

            $statement->execute([

            "numerosdevis" => "$numerosdevis",
            "dte" => $dte,
            "dateecheance" => "$dateecheance",
            "nomproduit" => "$nomproduit",
            "devispour" => "$devispour",
            "adresse" => "$adresse",
            "email" => "$email",
            "tel" => "$tel",
            "departement" => "$departement",
            "article" => "$article",
            "referencearticle" => "$referencearticle",
            "cout" => "$cout",
            "quantite" => "$quantite",
            "remise" => "$remise",
            "tax1" => "$tax1",
            "tax2" => "$tax2",
            "modalite" => "$modalite",
            "monnaie" => "$monnaie",
            "note" => "$note",
            "statut" => "$statut",
            "etiquette" => "$etiquette"
    ]);

    echo"ok";
            }
    
?>
Messages postés
31579
Date d'inscription
mercredi 22 octobre 2003
Statut
Modérateur
Dernière intervention
4 mars 2021
3 295
VALUES (
            :numerosdevis,
            :dte,
            :dateecheance,
            :nomproduit,
            :devispour,
            :adresse,
            :email,
            :tel,
            :departement,
            :article,
            :referencearticle,
            :cout,
            :quantite,
            :remise,
            :tax1,
            :tax2,
            :modalite,
            :monnaie,
             :note,
            :statut,
            :etiquette)");
Messages postés
38
Date d'inscription
lundi 19 octobre 2020
Statut
Membre
Dernière intervention
28 janvier 2021

Quel sont les changements ?
Messages postés
31579
Date d'inscription
mercredi 22 octobre 2003
Statut
Modérateur
Dernière intervention
4 mars 2021
3 295
ben... j'ai retiré les quotes ( quotes = apostrophe )
Messages postés
38
Date d'inscription
lundi 19 octobre 2020
Statut
Membre
Dernière intervention
28 janvier 2021

A oui autant pour moi, mais ca n'a rien changer ^^ toujours la même erreur ...
Messages postés
14448
Date d'inscription
lundi 9 juin 2008
Statut
Contributeur
Dernière intervention
3 mars 2021
807
tu as vraiment
"numerosdevis" => "$numerosdevis"
?
peux-tu partager ton code adapté et le texte du message d'erreur?
Messages postés
31579
Date d'inscription
mercredi 22 octobre 2003
Statut
Modérateur
Dernière intervention
4 mars 2021
3 295
Modifie également ton array de datas en ajoutant les ":" devant le nom des variables et retires les guillement autour des variables php

$statement->execute([
    ":numerosdevis" => $numerosdevis
    ":dte" => $dte,
    ":dateecheance" => $dateecheance
    ":nomproduit" => $nomproduit
    ":devispour" => $devispour
    ":adresse" => $adresse
    ":email" => $email
    ":tel" => $tel
    ":departement" => $departement
    ":article" => $article
    ":referencearticle" => $referencearticle
    ":cout" => $cout
    ":quantite" => $quantite
    ":remise" => $remise
    ":tax1" => $tax1
    ":tax2" => $tax2
    ":modalite" => $modalite
    ":monnaie" => $monnaie
    ":note" => $note
    ":statut" => $statut
    ":etiquette" => $etiquette
    
]);


et si ton souci persiste, montre nous le code modifié