[RESOLU] Update multiple

Mammouth du PHP | 725 Messages

24 juil. 2013, 11:21

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

Eléphant du PHP | 190 Messages

24 juil. 2013, 14:14

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.

Mammouth du PHP | 725 Messages

24 juil. 2013, 14:50

Si jamais j'ai ces donnees sous fome de variables que je recupere d'un formulaire

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

24 juil. 2013, 19:37

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 ;)


@+
Il en faut peu pour être heureux ......

Mammouth du PHP | 725 Messages

25 juil. 2013, 01:13

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 :(

Mammouth du PHP | 725 Messages

25 juil. 2013, 07:43

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

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

25 juil. 2013, 09:33

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 ;)



@+
Il en faut peu pour être heureux ......

Mammouth du PHP | 725 Messages

26 juil. 2013, 09:03

merci a vous

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

26 juil. 2013, 09:06

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.
Il en faut peu pour être heureux ......