base de données mysql : commande 'UPDATE' ? [PHP 5] - PHP - Programmation
Marsh Posté le 14-03-2009 à 19:43:14
UPDATE met à jour les enregistrements sélectionnés, SET précise le champ à modifier et sa nouvelle valeur, WHERE définit quelle(s) ligne(s) doit(vent) être sélectionnée(s).
Marsh Posté le 14-03-2009 à 20:07:00
petite précision : quand tu dis pour WHERE qu'il définit les lignes à modifier, par "lignes" tu entends "champs" ?
Marsh Posté le 14-03-2009 à 20:28:02
non. Une table de base de données, c'est une liste d'enregistrements, lesquels sont définis par des champs.
exemple, la table "amis" est définie par les champs :
- id
- prénom
- nom
- adresse
- cp
- ville
Chaque champ est typé (entier, texte, binaire, clé, index ...) cela forme le dictionnaire de données.
un enregistrement, c'est une nouvelle ligne.
Par exemple (1, 'toto', 'blabla', '1 rue truc', '01234', 'Biduleville') est un enregistrement dont l'ID est 1.
EDIT : par rapport à ton titre, ça n'a rien à voir avec une version de PHP, c'est une requête SQL donc ça a plus un rapport avec une normalisation de langage SQL.
Marsh Posté le 31-03-2010 à 15:47:30
Je suppose que si tu demandes cela, c'est que tu travailles sur le livre "PHP 5 - formation rapide, l'autoformation par l'exemple" de François Pellerin. Ta question m'intéresse parce que j'arrive au même point et cela ne fonctionne pas... Quand j'apporte des changements à mes pages, ces changements ne vont pas dans la table !: Bref, si depuis ton message, tu as eu des réponses permettant de débloquer la situation, je suis intéressé...
Marsh Posté le 31-03-2010 à 17:07:24
Y a pas assez de précisions pour pouvoir vous aider.
Essayez ceci :
Code :
|
Là on aura en cas d'échec :
- le code de la requete pour vérifier les éventuels problèmes d'accents. ($c1 / $c2 / $c3 / $c4 sont ils proprement formatés ?!)
- le message d'erreur mysql s'il y a un problème.
- l'interruption du script en cas d'erreur.
L'autoformation c'est bien. Mais avant de filer du code à l'arrach' l'auteur devrait filer les astuces pour apprendre à debugger. Coder dans le brouillard ça marche jamais
Marsh Posté le 31-03-2010 à 17:12:57
y'a pas de quote pour les valeurs ?
nompage=$n1
nompage='$n1'
Marsh Posté le 01-04-2010 à 12:52:01
si ce sont des champs de caractères ou des dates, il faut mettre entre quotes les valeurs des champs.
Pour info, quand on fait un UPDATE, on n'est pas obligé de donner tous les champs avec leur valeur : on ne mentionne dans le SET que ceux qui vont avoir une nouvelle valeur. Pour le WHERE, il me semble qu'on ne peut mettre que des champs se trouvant dans la même table (c'était vrai en mysql 4.x en tout cas, en 5, je ne sais pas si ça a changé).
Par ailleurs, on peut faire aussi des trucs de ce genre :
UPDATE MaTable SET Champ1 = Champ1 + 1;
Ca va avoir pour effet d'incrémenter le champ "Champ1" de tous les enregistrements de la table
Marsh Posté le 14-03-2009 à 19:35:30
Salut à tous
J'ai crée une table dans une base de données : table comportant 6 champs que sont : nompage, adressepage, contenu1, contenu2, contenu3, contenu4
Je crée ensuite 5 enregistrements
Je rajoute ensuite 1 nouvel enregistrement :
Il y a maintenant 6 enregistrements.
Et je mets à jour ma table avec la commande avec :
Ma question : quelqu'un peut-il m'expliquer précisément la commande UPDATE, avec SET et WHERE ? ce qui se passe exactement lors de cette instruction ?
où est passé le champ 'adressepage' ? il est manquant lors de la mise à jour : c'est pas normal ?