Message populaire. Taaazzz Posté 2 Mai 2010 Message populaire. Posté 2 Mai 2010 Bonjour / Bonsoir Voila j'ai un table avec cette structure -- -- Structure de la table `info_conquete`-- CREATE TABLE `info_conquete` ( `town_id` int(11) NOT NULL, `time` int(11) NOT NULL, `new_player_id` int(11) NOT NULL, `old_player_id` int(11) default NULL, `new_ally_id` int(11) default NULL, `old_ally_id` int(11) default NULL, `town_points` int(11) NOT NULL, UNIQUE KEY `time` (`time`,`new_player_id`)) ENGINE=MyISAM DEFAULT CHARSET=utf8; la mise à jour de cette base de donnée ce fait à partir d'un fichier json que je retravailles ce fichier json ne contient que les derniers entrées de la bdd donc moi sur la mienne je dois faire quoi comme requête pour ne rajouter que les nouvelles entré sans supprimé les anciennes données de ma table et en évitant de créé des doublons avec les données du fichier json que j'aurai déjà dans ma bdd à moi? Merci de votre aide car je galere deja depuis pas mal de temps sans trouvé la bonne solution... 1
jcaron Posté 3 Mai 2010 Posté 3 Mai 2010 Tu n'as pas du chercher beaucoup alors... La solution la plus évidente: SELECT 1 FROM table WHERE colonne1=$valeur1 AND colonne2=$valeur2... si (pas de résultat) alors INSERT ... Ca ça ne fait que rajouter. Si tu veux mettre à jour les anciennes, soit tu rajoutes: sinon UPDATE table SET colonne3=$valeur3,colonne4=$valeur4... WHERE colonne1=$valeur1 AND colonne2=$valeur2... soit tu utilises INSERT ... ON DUPLICATE KEY UPDATE ... (http://dev.mysql.com/doc/refman/5.1/en/insert-on-duplicate.html). Dans tous les cas, il faut que tu détermines les colonnes qui identifient un article (colonne1, colonne2 dans les exemples ci-dessus) et celles qui sont juste des valeurs qui peuvent changer pour un même article (colonne3, colonne4 dans les exemples). Idéalement tu devrais avoir un index (unique) sur les premières, voire une clef primaire. C'est obligatoire si tu veux utiliser INSERT ... ON DUPLICATE KEY UPDATE. Evidemment toutes les valeurs doivent être escapées comme il faut. Jacques.
Sujets conseillés
Veuillez vous connecter pour commenter
Vous pourrez laisser un commentaire après vous êtes connecté.
Connectez-vous maintenant