sky_striker
Messages postés41Date d'inscriptionlundi 26 juillet 2004StatutMembreDernière intervention28 octobre 2005
-
10 mars 2005 à 12:03
malalam
Messages postés10839Date d'inscriptionlundi 24 février 2003StatutMembreDernière intervention 2 mars 2010
-
11 mars 2005 à 10:19
Bonjour à tous,
Voila j'ai un script qui effectu une boucle et qui ajoute des traduction pour un certain texte (on simplifie pour l'explication). Lors d'une mise à jour si la traduction existe je fais un UPDATE classique mais si elle n'existe pas je la créé en faisant un INSERT jusqu'ici pas de problémes. Je voudrais faire l'économie du test d'existence en exécutant de toute façon un update ensuite j'aimerais récupéré le nombre de ligne testés par mysql si il est égal à 1 alors je ne fait pas le INSERT.
Mon probléme et qu'il n'existe pas de fonctions pour faire ça le mysql_affected_rows() renvoit 0 si la personne n'effectue pas de modifications.
Existe il un moyen de tester l'existence d'un tuple en faisant un update ou suis je obligé de passer par un SELECT d'abord ...???
Merci d'avance pour vos réponses
Tout les hommes meurent un jour mais peu d'entre eux vivent vraiment
sky_striker
Messages postés41Date d'inscriptionlundi 26 juillet 2004StatutMembreDernière intervention28 octobre 2005 10 mars 2005 à 17:28
Au lieu de faire un SELECT pour savoir si il existe puis en fonction du résultat un INSERT ou un UPDATE. Je voudrais :
- De toute façon faire un update
- Si le nbre de champs MAJ est égal à 1 alors je ne fait pas d'INSERT
ce la permet une économie du select d'autant que c requétes sont éxécutés dans une boucle
Probléme : La fonction mysql_affected_rows() ne réponds pas à mon attente car elle renvoit que le nombre de champs effectivement MAJ c'est à dire qu'elle renvoit nb=0 dans le cas d'une mise à jour avec les même donnée (Ce qui peut arriver dans mon cas et fausserait le test car je ne teste pas les contenus avant de les insérer, de toute façon mysql ne fait la mise à jour que si les contenu sont différents et c bien pour ça que dans ce cas là ça renvoi 0)
Début de solution : mysql_info() revoit une string ou le premier chiffre est le nombre de champs trouvés lors d'un essais de MAJ. C'est exactement ce que j'ai besoin mais comment extraire à coup sur ce nombe de la string renvoyé ???
Ex : Enregistrements correspondants: 1 Modifiés: 0 Warnings: 0
c'est un copié collé de ce que me renvoit la foncion dans le cas d'une mise à jour avec les mêmes donnés le probléme c que le format de la string varie d'une langue à l'autre ... Donc pour extraire les chiffres qui m'intéresse cela risque d'être une bidouille que je voudrais éviter
voila merci de ton aide
les hommes meurent un jour mais peu d'entre eux vivent vraiment
Vous n’avez pas trouvé la réponse que vous recherchez ?