8768 sujets

Développement web côté serveur, CMS

Bonjour à tous, j'ai quelques difficultés avec un update qui ne se fait pas bien.
Je m'explique. J'ai une requête sql qui s'execute bien en sql mais pas en php. Mon but étant d'affecter ma variable initialisée en php à ma donnée en bdd.

Mon var_dump me retourne une requete fonctionnelle également : object(PDOStatement)#2 (1) { ["queryString"]=> string(129) "UPDATE beneficiaire_liste_diffusion SET Etat='accepter' WHERE Email='kilo@hotmail.fr'" }

En bdd, ma colonne "Etat" devient vide Smiley decu alors qu'elle était égale à "en attente".
Ma variable $decrypted étant initialisée à soit "accepter" soit "refuser", je ne comprends pas trop le problème et pareil ma variable $email_beneficaire est bien initialisée.

Colonne "Etat" :
upload/1602853343-80834-capture.png

Requête :

 $confirmation_valideur = "UPDATE beneficiaire_liste_diffusion 
                                           SET Etat='$decrypted' 
                                          WHERE Email='$email_beneficiaire'";

                    //  Execution de la requête lors de l'enregistrement 
                    $resultat = $bdd->query($confirmation_valideur) or die ("Requête invalide");

                    var_dump($resultat);


Connexion :

  include_once('connexion.php');
            // Connexion à la bdd 
                try { 
                    $bdd = getBdddev(); // Dev
                }

                catch(PdoException $e){
                    die('Pdo error: '.$e->getMessage());
                }
                catch(Exception $e){
                    die('Random error: '.$e->getMessage());
                }

Modifié par Jisiiss (16 Oct 2020 - 15:15)
Modérateur
Bonjour,

1) que dit la log php ?
2) si on fait un echo de $confirmation_valideur juste après son affectation, ça donne quoi ?
3) est-ce que tu es sûr qu'il n'y a pas plus tard une autre query qui vient effacer celui de cette query-ci ?
4) essaie de faire une query en dur (sans les variables $decrypted et $email_beneficiaire, mais avec leurs valeurs à la place).
5) en pdo, il vaut mieux faire une requête avec les méthodes prépare et execute (on évite les erreurs de syntaxe et d'éventuels problèmes de SQL injection). Par exemple :
$confirmation_valideur = "UPDATE beneficiaire_liste_diffusion SET Etat=? WHERE Email=?";
$r=$bdd->prepare($confirmation_valideur);
$r->execute(array($decrypted,$email_beneficiaire));

Amicalement,
Modérateur
Bonjour,

Et aussi, si on ne "prépare" pas, c'est plutôt $bdd->exec($confirmation_valideur) que $bdd->query($confirmation_valideur) qu'il faudrait utiliser.

Amicalement,