PHP utilisation commande UPDATE sérialisée [Résolu/Fermé]

Signaler
Messages postés
5
Date d'inscription
vendredi 1 mai 2009
Statut
Membre
Dernière intervention
6 mai 2009
-
Messages postés
565
Date d'inscription
mercredi 15 avril 2009
Statut
Membre
Dernière intervention
28 décembre 2009
-
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

Messages postés
565
Date d'inscription
mercredi 15 avril 2009
Statut
Membre
Dernière intervention
28 décembre 2009
83
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 ?
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
Autre formulation,

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

Merci
Messages postés
565
Date d'inscription
mercredi 15 avril 2009
Statut
Membre
Dernière intervention
28 décembre 2009
83
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.