Page 1 sur 1

requete sql

Posté : 27 mai 2014, 11:55
par laubanane
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 ;)

Re: requete sql

Posté : 27 mai 2014, 11:58
par RL-Flo
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.

Re: requete sql

Posté : 27 mai 2014, 12:03
par laubanane
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

Re: requete sql

Posté : 27 mai 2014, 12:14
par RL-Flo
Et si tu écris " var_dump("UPDATE `util` SET `pseudo` = $npseudo WHERE `id` = $id") " , retrouve tu ta variable $npseudo et $id ?

Re: requete sql

Posté : 27 mai 2014, 12:34
par jojolapine
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,

Re: requete sql

Posté : 27 mai 2014, 12:45
par laubanane
RL-Flo : le var_dump me retourne un "booleen false" :shock:

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

Re: requete sql

Posté : 27 mai 2014, 13:23
par sirakawa
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'");

Re: requete sql

Posté : 27 mai 2014, 13:52
par Ryle
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 :))

Re: requete sql

Posté : 27 mai 2014, 14:17
par laubanane
MERCI ! il ne manquait que les guillemets -_-