Page 1 sur 1

Update multiple

Posté : 24 juil. 2013, 11:21
par rimie
Bonjour,

je veux effectuer une operation UPDATE sur plusieurs champs d'un seul clique et UNE SEULE requete:
UPDATE `chansons` SET `mp3` = '1', duration = '37.041633605957', date_add = '1374656786' WHERE num IN (1, 2, 4)
Cette requete va mettre a jour l'id 1,2 et 4 avec les memes informations, peut on le faire et chaque id aura ses propres informations??

Merci

Re: Update multiple

Posté : 24 juil. 2013, 14:14
par Zahnzao
Salut,

c'est possible
UPDATE chansons
    SET mp3 = '1',
    duration = CASE id
        WHEN 1 THEN '37.042'
        WHEN 2 THEN '20.652'
        WHEN 3 THEN '12.589'
    END,
    date_add = CASE id
       WHEN 1 THEN '1374656786'
       WHEN 2 THEN '2358683325'
       WHEN 3 THEN '4598695502'
    END
WHERE id IN (1,2,3)
Après, niveau optimisation je suis pas certain que ça le soit plus que plusieurs update à la suite.

A tester.

Re: Update multiple

Posté : 24 juil. 2013, 14:50
par rimie
Si jamais j'ai ces donnees sous fome de variables que je recupere d'un formulaire

Re: Update multiple

Posté : 24 juil. 2013, 19:37
par moogli
salut,


aucun intérêt une requête préparée sera plus simple à utilisée (et peut être tout aussi rapide à exécuter) c'est fait pour cela ;)


@+

Re: Update multiple

Posté : 25 juil. 2013, 01:13
par rimie
salut,


aucun intérêt une requête préparée sera plus simple à utilisée (et peut être tout aussi rapide à exécuter) c'est fait pour cela ;)


@+
J'ai pas compris :(

Re: Update multiple

Posté : 25 juil. 2013, 07:43
par rimie
J'ai fait cette requete:
for($i=0; $i<=$counts; $i++) {
UPDATE `chansons` SET `mp3` = '1', duration = '.$duree[$i].', date_add = '.$date[$i].' WHERE num = $id[$i]
}
J'ai teste et ca me retourne la premiere occurance de chaque variable, par exemple:

$duree[$i] = 123456

avec la requete elle prenait le format:

$duree[$i] = 1

Re: Update multiple

Posté : 25 juil. 2013, 09:33
par moogli
ton dernier code n'est pas syntaxiquement correct ...

ensuite pour les requêtes préparées une exemple avec l'extension mysql, les extension mysqliet PDO proposant chacune un mécanisme pour les utiliser plus simplement.

ceci sera surement le plus utile pour toi qu'une requête alambiquée ;)



@+

Re: Update multiple

Posté : 26 juil. 2013, 09:03
par rimie
merci a vous

Re: Update multiple

Posté : 26 juil. 2013, 09:06
par moogli
Modération :
Si ta question est résolue, pense à l'indiquer pour que les futures personnes qui voudront consulter ce sujet sachent qu'il contient une solution.
Tu peux réaliser cette opération toi-même en cliquant sur le bouton vert "Mettre le sujet en tant que Résolu" situé en haut de la page à côté du titre du sujet.