[RESOLU] requete sql

Eléphanteau du PHP | 13 Messages

27 mai 2014, 11:55

Bonjour, je voudrais mdifier mon pseudo via un formulaire mais ma requete sql ne fonctionne pas.
la voici :
 mysql_query("UPDATE `util` SET `pseudo` = $npseudo WHERE `id` = $id");
S'il y a besoin d'autres information pour m'aider dites le moi ;)

Petit nouveau ! | 7 Messages

27 mai 2014, 11:58

Salut !
Quand mes requêtes SQL ne fonctionnent pas, je les copie-colle dans l'excuteur PHPmyAdmin pour voir le message d'erreur.
En espérant que cela puisse t'aider.

Eléphanteau du PHP | 13 Messages

27 mai 2014, 12:03

l'inconvénient c'est que ça fonctionne dans phpmyadmin en écrivant la requête sous cette forme :
UPDATE `util` SET `pseudo` = 'henry' WHERE `id` = 4

Petit nouveau ! | 7 Messages

27 mai 2014, 12:14

Et si tu écris " var_dump("UPDATE `util` SET `pseudo` = $npseudo WHERE `id` = $id") " , retrouve tu ta variable $npseudo et $id ?

ViPHP
ViPHP | 3607 Messages

27 mai 2014, 12:34

Bonjour,

Première chose : il faudrait utiliser si possible mysqli ( http://www.php.net/manual/fr/book.mysqli.php ) et non plus mysql qui est déprécié aujourd'hui.

Deuxième point, il faut que tu vérifies la requête générée (en l'occurence la requête que tu as construit ne fonctionnera pas en l'état dans phpmyadmin par exemple) et que échappes tes arguments ( http://www.php.net/manual/fr/mysqli.rea ... ample-1752 )

Cordialement,

Eléphanteau du PHP | 13 Messages

27 mai 2014, 12:45

RL-Flo : le var_dump me retourne un "booleen false" :shock:

et jojo je réfléchie, et je reviens ^^

Mammouth du PHP | 2278 Messages

27 mai 2014, 13:23

Il faut suivre jojolapine sur mysqli.
Le var_dump est totalement inutile.
En revanche il serait mieux de procéder ainsi:
$requete ="UPDATE `util` SET `pseudo` = $npseudo WHERE `id` = $id");
print "<br>requete<br>";
et de copier/coller cet affichage dans phpmyadmin.
il vaut mieux en général écrire ainsi:
"UPDATE `util` SET `pseudo` = '$npseudo' WHERE `id` = '$id'");
Vanitas vanitatum et omnia vanitas
Mes derniers livres :
Sauvez les Mots chez BoD,
Tous les chemins mènent à ROM chez BoD

Avatar du membre
Modérateur PHPfrance
Modérateur PHPfrance | 10684 Messages

27 mai 2014, 13:52

il vaut mieux en général écrire ainsi:
"UPDATE `util` SET `pseudo` = '$npseudo' WHERE `id` = '$id'");
Il faut surtout respecter le format des champs en base pour leur passer une valeur :)

Les valeurs numériques (colonne de type INT, TINYINT, FLOAT, DOUBLE, ...) ne doivent pas être délimitées par des apostrophes : WHERE age < 25 ; WHERE id = 42 ; ...

Pour toutes les autres valeurs (colonne de type CHAR, VARCHAR, DATE, TEXT, ...), elles doivent systématiquement être délimitées par des apostrophes : WHERE pseudo = 'TOTO' ; WHERE date_anniv < '27/05/2014' ; ...


La tolérance spécifique de MySQL / MySQLi qui autorise les apostrophes autour des valeurs numériques est à éviter autant que possible, car ceci ne fonctionnera plus le jour où vous serez confronté à d'autres système de base de données.

(de même, je recommande d'éviter les ` autour des noms de tables et de colonnes, et de simplement choisir leurs noms en dehors des mots clés réservés du langage SQL :))
Ce n'est pas en améliorant la bougie que l'on a inventé l'ampoule...

Eléphanteau du PHP | 13 Messages

27 mai 2014, 14:17

MERCI ! il ne manquait que les guillemets -_-