Remplacer INSERT par UPDATE [Résolu]

Messages postés
281
Date d'inscription
dimanche 7 avril 2002
Statut
Membre
Dernière intervention
11 avril 2013
- - Dernière réponse : cs_Anthomicro
Messages postés
9440
Date d'inscription
mardi 9 octobre 2001
Statut
Membre
Dernière intervention
13 avril 2007
- 21 déc. 2004 à 19:31
Salut,

j'ai fait une requete pour avoir tout les enregistrements ayant le champ act egal à 2

SELECT `id` FROM `tab` WHERE `act` = 2 


j'ai sauvegarde le tout dans un fichier *.sql

j'aimerias avoir un petit code php qui fera en sorte de changer dans mon fichier sql tout les lignes :

INSERT INTO `tab` VALUES (x);


par
UPDATE `tab` SET `act` '2' WHERE `id` 'x';


et puis lancer le nouveau fichier pour mettre a jour ma table sur mon hebergeur.

Merci.
------------------------------------------------------------------
Debutant PHP/SQL, Delphi
Club de correspondance :
http://www.elatlasclub.fr.st
Afficher la suite 

9 réponses

Meilleure réponse
Messages postés
9440
Date d'inscription
mardi 9 octobre 2001
Statut
Membre
Dernière intervention
13 avril 2007
8
3
Merci
Tu peux cliquer sur "réponse acceptée" stp ?

merci beaucoup ;-)

a +

Vulgarisation informatique : Entraide, dépannage et vulgarisation informatique

Dire « Merci » 3

Quelques mots de remerciements seront grandement appréciés. Ajouter un commentaire

Codes Sources 136 internautes nous ont dit merci ce mois-ci

Commenter la réponse de cs_Anthomicro
Messages postés
9440
Date d'inscription
mardi 9 octobre 2001
Statut
Membre
Dernière intervention
13 avril 2007
8
0
Merci
Salut ;-)

Une fois ton fichier sql ouvert avec PHP, mets le dans une variable (ici j'appelerai cette variable $sql pour l'exemple).

Voici ce que ça donne :

$sql=preg_replace('`\INSERT INTO `tab` VALUES \((.+?)\);`','UPDATE `tab` SET `act` = \'2\' WHERE `id` = \'$1\';',$sql);

ensuite tu sauvegardes ton fichier sql

a ++

Vulgarisation informatique : Entraide, dépannage et vulgarisation informatique
Commenter la réponse de cs_Anthomicro
Messages postés
281
Date d'inscription
dimanche 7 avril 2002
Statut
Membre
Dernière intervention
11 avril 2013
0
Merci
Merci Antomicro.

je vais l'essayer ..
------------------------------------------------------------------
Debutant PHP/SQL, Delphi
Club de correspondance :
http://www.elatlasclub.fr.st
Commenter la réponse de cs_apz
Messages postés
281
Date d'inscription
dimanche 7 avril 2002
Statut
Membre
Dernière intervention
11 avril 2013
0
Merci
Ca donne cette erreur :

Warning: Unknown modifier 't' in c:\program files\easyphp\www\test\sql\test.php on line 6

------------------------------------------------------------------
Debutant PHP/SQL, Delphi
Club de correspondance :
http://www.elatlasclub.fr.st
Commenter la réponse de cs_apz
Messages postés
9440
Date d'inscription
mardi 9 octobre 2001
Statut
Membre
Dernière intervention
13 avril 2007
8
0
Merci
Bon attends je teste ça en local ;-)

à tout à l'heure

Vulgarisation informatique : Entraide, dépannage et vulgarisation informatique
Commenter la réponse de cs_Anthomicro
Messages postés
9440
Date d'inscription
mardi 9 octobre 2001
Statut
Membre
Dernière intervention
13 avril 2007
8
0
Merci
Bon ok c'est normal, j'avais zappé les caractères de début et fin d'expression qui étaient contenus dans la requête, bref voici l'expression régulière corrigée :

$sql=preg_replace('#\INSERT INTO `tab` VALUES \((.+?)\);#','UPDATE `tab` SET `act` = \'2\' WHERE `id` = \'$1\';',$sql);

a ++

Vulgarisation informatique : Entraide, dépannage et vulgarisation informatique
Commenter la réponse de cs_Anthomicro
Messages postés
281
Date d'inscription
dimanche 7 avril 2002
Statut
Membre
Dernière intervention
11 avril 2013
0
Merci
Non le code ne remplace rien ...

tous les lignes sont telles .... avec INSERT et le reste

par de UPDATE ...

voila des lignes pour faire un test :

INSERT INTO `sites` VALUES (176);

INSERT INTO `sites` VALUES (192);

INSERT INTO `sites` VALUES (196);

INSERT INTO `sites` VALUES (197);

INSERT INTO `sites` VALUES (200);

INSERT INTO `sites` VALUES (204);

INSERT INTO `sites` VALUES (209);

INSERT INTO `sites` VALUES (211);

INSERT INTO `sites` VALUES (213);

INSERT INTO `sites` VALUES (216);

INSERT INTO `sites` VALUES (217);

INSERT INTO `sites` VALUES (218);

INSERT INTO `sites` VALUES (219);


------------------------------------------------------------------
Debutant PHP/SQL, Delphi
Club de correspondance :
http://www.elatlasclub.fr.st
Commenter la réponse de cs_apz
Messages postés
9440
Date d'inscription
mardi 9 octobre 2001
Statut
Membre
Dernière intervention
13 avril 2007
8
0
Merci
Normal, tu me dis au début "INSERT INTO `tab` VALUES (x);"

et ensuite "INSERT INTO `sites` VALUES (219);"

bref ça donne ça :

$sql=preg_replace('#\INSERT INTO `sites` VALUES \((.+?)\);#','UPDATE `tab` SET `act` = \'2\' WHERE `id` = \'$1\';',$sql);

et ça fonctionne parfaitement chez moi...

a +

Vulgarisation informatique : Entraide, dépannage et vulgarisation informatique
Commenter la réponse de cs_Anthomicro
Messages postés
281
Date d'inscription
dimanche 7 avril 2002
Statut
Membre
Dernière intervention
11 avril 2013
0
Merci
Mille excuses Anthomicro :blush)

Je n'ai pas fait attention.

Mille merci
:big)

------------------------------------------------------------------
Debutant PHP/SQL, Delphi
Club de correspondance :
http://www.elatlasclub.fr.st
Commenter la réponse de cs_apz