Phpmyadmin modifier une variable
Résolu
jobouille
Messages postés
356
Statut
Membre
-
jobouille Messages postés 356 Statut Membre -
jobouille Messages postés 356 Statut Membre -
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
-
Bonsoir,
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 -
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 ) -
-
-
-