Avatar billede weeelo Nybegynder
09. marts 2006 - 13:04 Der er 3 kommentarer og
1 løsning

Script til smart opdatering af DB

Hej eksperter,

Jeg har et lille problem efter optimering af databasen - det drejer sig om tre felter (firstname, nickname, lastname), som tidligere kun bestod af to felter (name, full_name).

Efter optimeringen består de tre nye felter alle af samme string, men jeg vil gerne have delt det op, hvis det kan lade sig gøre (uden at gå over 2000 rækker igennem manuelt).

Jeg skal ende med en masse rækker der gør følgende:

Eksp. på række:

firstname = Peter Henriksen
nickname = Peter Henriksen
lastname = Peter Henriksen

UPDATE names SET firstname = REPLACE(firstname,'Peter Henriksen','Peter');
UPDATE names SET nickname = REPLACE(nickname,'Peter Henriksen','');
UPDATE names SET lastname = REPLACE(lastname,'Peter Henriksen','Henriksen');

-------------------------------------------

Det skal gøres udfra et udtræk fra selv samme database, som skal se nogenlunde sådan her ud:

SELECT * FROM names WHERE firstname = nickname AND nickname = lastname ORDER by firstname

Er der nogen, som har en god ide til hvordan jeg får sat skub i en sådan funktion?

MVH Weeelo
Avatar billede Slater Ekspert
09. marts 2006 - 13:14 #1
Burde noget i denne stil ikke gøre tricket? :

$rs = mysql_query ("select firstname from names");
while ($row = mysql_fetch_array($rs)) {
  list($fn, $ln) = explode(" ", $row['firstname']);
  mysql_query ("update names set (firstname, lastname) values ($fn, $ln)");
}
Avatar billede weeelo Nybegynder
09. marts 2006 - 13:33 #2
Med et par få modifikationer virkede det perfekt. 1000 tak, det gjorde lige min dag en smule mere behagelig!!

Smid et svar, så får du dine velfortjente point og det var i øvrigt sådan her det fungerede perfekt:

$rs = mysql_query ("SELECT id, firstname FROM names WHERE firstname = nickname AND nickname = lastname");
while ($row = mysql_fetch_array($rs)) {
  list($fn, $ln) = explode(" ", $row['firstname']);
  mysql_query ("UPDATE names SET firstname='$fn', nickname='', lastname='$ln' WHERE id=$row[id];");
Avatar billede Slater Ekspert
09. marts 2006 - 13:40 #3
Nå for satan. Jeg kom vist til at bytte rundt på update og insert syntakserne. Godt du selv kunne rette det ;)
Avatar billede weeelo Nybegynder
09. marts 2006 - 13:42 #4
Det gik lige - bedre servering kunne man vidst heller ikke have ønsket :)
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Vi tilbyder markedets bedste kurser inden for webudvikling

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester