[RESOLU] Erreur lors d'une insertion PDO

Répondre


Cette question est un moyen d’empêcher des soumissions automatisées de formulaires par des robots.
Smileys
:D :) :( :o :shock: :? 8-) :lol: :x :P :oops: :cry: :evil: :twisted: :roll: :wink: :!: :?: :idea: :arrow: :| :mrgreen: =D> #-o =P~ :^o :non: :priere: 8-|
Voir plus de smileys
  Revue du sujet
 

  Étendre la vue Revue du sujet : [RESOLU] Erreur lors d'une insertion PDO

Re: Erreur lors d'une insertion PDO

par davlongin » 10 févr. 2023, 12:36

Merci ! Je faisais n'importe quoi depuis le début...Dsl pour le dérangement. C'était vraiment brouillon...C'est bon j'ai pu réussir ce que je voulais faire.
Encore dsl et Bonne journée !

Re: Erreur lors d'une insertion PDO

par Saian » 10 févr. 2023, 12:08

Salut,

Il y a bien un problème de casse et de cohérence comme signalé par Spols ! à un moment faut essayer de comprendre au lieu de se braquer.

Les index du tableau $data doivent correspondre aux paramètres de la requête. La c'est un peu n'importe quoi...

Avec :
:namePerson, :numCB, :dateExp, :cv

Le tableau devrait être :
$data = [
    'namePerson'=> $namePerson,
    'numCB'=> $numCB,
    'dateExp' => $dateExp,
    'cv' => $cv,
];

Soit vous changez les index du tableau, soit vous changez les paramètres de la requête pour que tout ça corresponde, sinon forcément ça ne peut pas fonctionner.

Bonne journée !!

Re: Erreur lors d'une insertion PDO

par davlongin » 10 févr. 2023, 12:02

Je sais que ces choses là sont sensibles...Mais je n'ai mis un minimum de sécurité car je veux juste tester un paiement pas très complexe sur ma propre machine et je ne le mettrais pas en ligne donc il n'y aura pas de problèmes s'il n'y a pas de sécurité.

Je volais juste savoir ce qui ne va pas dans mon code ou dans ma manière de faire...merci de bien vouloir me guider si c'est possible.

Re: Erreur lors d'une insertion PDO

par Spols » 10 févr. 2023, 11:26

Attention à la casse, c'est sensible ces choses là...

et puis il leur faut aussi de la cohérence.

Erreur lors d'une insertion PDO

par davlongin » 10 févr. 2023, 10:37

Bonjour lors de mon insertion j'obtiens cette erreur :
PDOStatement::execute(): SQLSTATE[HY093]: Invalid parameter number: parameter was not defined in C:\xampp\htdocs\MonoStage\paymentRevolut.php on line 154
INSERT INTO paymentrevolut (namePerson, NumCB, dateExpiration, cvv) VALUES (:namePerson, :numCB, :dateExp, :cv)

Et voici le code :

Le formulaire :
<form action="paymentRevolut.php" method="POST">
    <div class="container p-0">
        <div class="card px-4">
            <p class="h8 py-3">Payment Details</p>
            <div class="row gx-3">
            <div class="col-12">
                    <div class="d-flex flex-column">
                        <p class="text mb-1">Total du panier</p><br/>
                        <p>Vide pour l'instant<p>
                        <!-- <input type="number" value="Total du panier" name="cvvPay"> -->
                    </div>
                </div>
                <div class="col-12">
                    <div class="d-flex flex-column">
                        <p class="text mb-1">Nom de la personne</p>
                        <input class="form-control mb-3" type="text" placeholder="Name" value="Barry Allen" name="NamePerson">
                    </div>
                </div>
                <div class="col-12">
                    <div class="d-flex flex-column">
                        <p class="text mb-1">Numéro de carte</p>
                        <input class="form-control mb-3" type="number" placeholder="1234 5678 435678" name="NumCB">
                    </div>
                </div>
                <div class="col-6">
                    <div class="d-flex flex-column">
                        <p class="text mb-1">Date d'expiration de la carte</p>
                        <input class="form-control mb-3" type="month" placeholder="MM/YYYY" name="DateExpiration">
                    </div>
                </div>
                <div class="col-6">
                    <div class="d-flex flex-column">
                        <p class="text mb-1">CVV/CVC</p>
                        <input class="form-control mb-3 pt-2 " type="password" placeholder="***" name="cvvPay">
                    </div>
                </div>
                <div class="col-12">
                    <div class="btn btn-primary mb-3">
                        <input type="submit" value="Valider le paiement" name="btnSendPay">
                        <!-- <span class="ps-3">Valider le paiement</span> -->
                        <span class="fas fa-arrow-right"></span>
                    </div>
                </div>
            </div>
        </div>
    </div>
</form>
Le traitement du formulaire (l'insertion vers la BDD) :
<?php
    if(isset($_POST["btnSendPay"])){
        $data = [
            'NamePerson'=> $namePerson,
            'NumCB'=> $numCB,
            'DateExpiration' => $dateExp,
            'cvvPay' => $cv,
        ];
        $sql = "INSERT INTO paymentrevolut (namePerson, NumCB, dateExpiration, cvv) VALUES (:namePerson, :numCB, :dateExp, :cv)";
        $stmt= $access->prepare($sql);
        $stmt->execute($data);
        echo $sql;
    }else{
        die("Veuillez remplir les champs SVP !!!");
    }
?>
J'espère avoir des retours sur mon problème, merci d'avance ! Bonne journée !