PHP utilisation commande UPDATE sérialisée

Résolu/Fermé
harold31 Messages postés 5 Date d'inscription vendredi 1 mai 2009 Statut Membre Dernière intervention 6 mai 2009 - 6 mai 2009 à 22:30
P@t@ch0n Messages postés 565 Date d'inscription mercredi 15 avril 2009 Statut Membre Dernière intervention 28 décembre 2009 - 7 mai 2009 à 19:53
Bonjour,
Souhaitant optimiser un site existant je pensais pouvoir diminuer le nbre de requêtes et les sérialisant
comme l'exemple suivant:

[code]

// Affectation d'un nombre aléatoire
$query1="SELECT * FROM jeux WHERE statut='ok'";
$reponse1 = mysql_query($query1);

// Parcoure les résultats
$query2 = '';
while ($donnees1 = mysql_fetch_array($reponse1) )
{
$r = rand();
$query2 .= 'UPDATE jeux SET rnd='.$r.' WHERE id='.$donnees1['id'].';';
}
$reponse2 = mysql_query($query2);
[/code]

Si je fais un echo de $query2 et teste manuellement la requête dans Phpmyadmin, cela fonctionne.
Or, que ce soit en local ou en ligne, la table n'est pas mis à jour.

Pas de soucis avec la requête dans la boucle seulement je voudrai éviter si possible un grand nombre de requêtes contre une seule requête plus longue.

4 réponses

P@t@ch0n Messages postés 565 Date d'inscription mercredi 15 avril 2009 Statut Membre Dernière intervention 28 décembre 2009 84
7 mai 2009 à 07:55
Je n'ai pas bien compris ce que tu veux faire, et le rapport avec la sérialisation.
Si tu veux réduire le nombre de requete, mets leurs résultats en cache.

Pour ton problème, je suspecte un type entier trop petit vis à vis de la valeur que tu insères.
De quel type est ta colonne md ?
0
Bonjour,

Sérialisation n'est peut être pas bien choisi.
Concrètement, je voudrai savoir s'il est possible de faire quelque chose comme:

mysql_query( 'UPDATE base SET nom = dupond WHERE id=1' ;
'UPDATE base SET nom = durand WHERE id=2';
--- --- --- -- -- ---
'UPDATE base SET nom = dubois WHERE id=187'; );

Pour éviter un grand nombre d'appels a mysql_query et éventuellement gagner en efficacité.

Merci
0
Autre formulation,

Peut on mettre à jour plusieurs enregistrements en même temps ?

Merci
0
P@t@ch0n Messages postés 565 Date d'inscription mercredi 15 avril 2009 Statut Membre Dernière intervention 28 décembre 2009 84
7 mai 2009 à 19:53
Pour l'exemple que tu montres avec les update, non tu ne peux pas le faire dans la meme requete puisque les modifications diffèrent en fonction des ids.

Tout dépend du contexte, par exemple si on veut incrémenter une colonne de plusieurs lignes, là oui, une seule requete est suffisante.

Mais de toute façon, les update, insert, delete sont des requetes qui s'effectuent très rapidement, les requetes les plus lourdes sont de loin les select.
0