Commande SQL qui ne modifie qu'une seule ligne... - SQL/NoSQL - Programmation
Marsh Posté le 29-02-2012 à 11:42:35
Le where est une close de restriction.
Pour le confirmer, au lieu d'un update, faire un select :
Select `mabase`.`matable` |
Combien de lignes seront renvoyées par ce select ? Une seule, je pense. Donc, après, il est normal que Update ne mette à jour qu'une ligne.
Il faudrait tenter une autre requête :
UPDATE `mabase`.`matable` |
Marsh Posté le 29-02-2012 à 12:10:37
merci
En fait non le where peut renvoyer beaucoup de lignes.
Je vais tenter l'autre commande avec un limit qd même
Marsh Posté le 29-02-2012 à 13:35:05
Bon ça me renvoie une erreur :
#1064 - You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'CONVERT( `monautrechamp` USING utf8 ) = 'valeur' LIMIT 1' at line 2
avec cette requête...
Code :
|
Marsh Posté le 29-02-2012 à 14:22:08
Limit n'est pas utilisable dans un update normalement...
+ pour ce qu'a dit olivthill. Je ne vois pas d'autre explication.
T'es sûr que quand tu fais un :
Code :
|
y'a bien plusieurs valeurs qui sont remontées?
Marsh Posté le 29-02-2012 à 14:29:10
rufo a écrit : Limit n'est pas utilisable dans un update normalement...
|
Oui ta commande renvoie "Affichage des enregistrements 0 - 29 (527 total, traitement: 0.0024 sec.)"
Sinon pour le limit je le fais tout le temps donc à mon avis ce n'est pas en cause, enfin j'en sais rien...
Marsh Posté le 29-02-2012 à 15:10:21
Après vérif dans la doc, effectivement update accepte un limit à la fin. J'aurai appris un truc aujourd'hui
A noter tout de même que le limit marche uniquement si le update est fait sur une seule table. Si c'est sur du multi-tables, on peut faire que du where (on perd le order by et le limit). C'est très subtil...
http://dev.mysql.com/doc/refman/5.0/fr/update.html
Marsh Posté le 29-02-2012 à 15:20:43
Bon ben ça m'ennuie, ce qui m'inquiète c'est que même mon hébergeur ne sait pas...
Pitin y a un truc là c'est sûr !!!
Marsh Posté le 29-02-2012 à 15:29:12
Franchement je comprends pas trop l'intérêt de la requête a part pourrir les perfs...
Utilise une bind variable pour ta valeur, gère bien la connexion au SGBD pour déclarer le charset que tu va utiliser lors de ta connexion (i.e. que ça soit le même que celui utilisé par ton programme) et envoi ta valeur telle quelle...
Parce que convertir une colonne à la volée... mais WTF...
Marsh Posté le 29-02-2012 à 15:34:13
Attention
dexenium a écrit : ... j'utilise cette commande via la console Sql de phpmyadmin |
c'est un truc que je vais faire 1 ou 2 fois dans l'année (c'est pas intégré dans un script php ou autre), en même temps j'ai 8000 fiches à modifier...
Marsh Posté le 29-02-2012 à 08:12:17
Bonjour à tous !
Quelqu'un a-t-il une idée et peut me dire pourquoi cette p#@§%@ de commande Sql ne me modifie qu'une seule et unique valeur :
Je veux en fait copier la valeur du champ "monautrechamp" dans le champ "monchamp"
Le problème est que ça marche et ça me modifie qu'une seule valeur, si je change la valeur, la valeur est à nouveau modifiée mais une seule fois !!!
Ca fait 2 heures que je suis dessus et je comprends plus.
Je précise que les valeurs sont des mots... est-ce que c'est important avec utf8 ?
Je précise aussi que j'utilise cette commande via la console Sql de phpmyadmin
Sinon si vous avez un avis...
Merci