Phpmyadmin modifier une variable
Résolu
Bonjour,
j'ai fait un petit formulaire que chaque membre de mon site ont.
Ils doivent écrire un pseudo dans un input et en cliquant sur "envoyer", la variable/colonne "mp" doit passer à 1 dans la ligne du pseudo choisit.
Voici ce que j'ai fait qui ne fonctionne pas :
Merci et bonne soirée
j'ai fait un petit formulaire que chaque membre de mon site ont.
Ils doivent écrire un pseudo dans un input et en cliquant sur "envoyer", la variable/colonne "mp" doit passer à 1 dans la ligne du pseudo choisit.
Voici ce que j'ai fait qui ne fonctionne pas :
if(isset['envoyer'] AND isset($_POST['destinataire']))
{
$destinataire = htmlspecialchars($_POST['destinataire']);
$mp1 = $bdd->prepare('UPDATE membres SET mp = 1 WHERE destinataire = ?');
$mp1->execute(array($destinataire));
}
Merci et bonne soirée
1 réponse
-
ModérateurBonsoir,
Pour comprendre où se situe le souci il faut que fasses des ECHO (ou des print_r) de tes variables.....
et pour cela : Sorts la requête de son exécution ... comme ceci :if(isset['envoyer'] AND isset($_POST['destinataire'])){ $destinataire = htmlspecialchars($_POST['destinataire']); $sql = "UPDATE membres SET mp = 1 WHERE destinataire = ?"; $params = array($destinataire); // Le temps des tests : echo " <pre>Requête : <br>".$sql; echo "<br> Params :<br>"; print_r($params); echo "</pre>"; $mp1 = $bdd->prepare($sql); $mp1->execute($params); }
Ensuite, si Params contient bien la valeur attendue ..... tu prends la requête... tu remplaces ton "?" par la valeur contenue dans $params .... et tu vas la tester DIRECTEMENT dans ta Base de données..
par exemple : https://codes-sources.commentcamarche.net/faq/10778-heidisql-tester-ses-requetes-sql
-
Merci, grâce aux echo j'ai pu voir que dans le WHERE il fallait que je mettre la variable $destinataire, ce qui donne ceci :
$destinataire = htmlspecialchars($_POST['destinataire']); $sql = "UPDATE membres SET mp = 1 WHERE pseudo = ".$destinataire.""; $params = array($destinataire);
Cependant, le mp ne passe pas à 1 :/
Voilà le résultat ce que les echo m'affichent :
Requête :
UPDATE membres SET mp = 1 WHERE pseudo = ?
Params :
Array
(
[0] => jobouille
)
Merci -
Modérateur@jobouille
grâce aux echo j'ai pu voir que dans le WHERE il fallait que je mettre la variable $destinataire
Ben non... puisqu'elle est dans la variable $params ...
Comprends tu ce que tu fais ?
Et donc... as tu testé ta requête en direct dans ta BDD ?UPDATE membres SET mp = 1 WHERE pseudo ='jobouille'
Si (et seulement SI ) cette requête fonctionne correctement dans ta BDD ... tu peux essayer ceci :if(isset['envoyer'] AND isset($_POST['destinataire'])){ $destinataire = htmlspecialchars($_POST['destinataire']); $sql = "UPDATE membres SET mp = 1 WHERE destinataire = :desti"; $params = array(":desti"=>$destinataire); $mp1 = $bdd->prepare($sql); $mp1->execute($params); }
Issu des exemples de la page : https://www.php.net/manual/fr/pdostatement.execute.php
(exemple 2 ) -
-
Modérateur@jobouilleJe pense (malheureusement...) connaitre la réponse..; mais ..... dis moi ....
COMMENT AS TU TESTE CETTE REQUETE ??
En direct dans ta BDD (comme je te le demande depuis le début) ou dans ton code PHP (ce qui ne sert à rien ! ) ??? -
-