Avatar billede lademan Novice
27. august 2003 - 10:24 Der er 19 kommentarer og
1 løsning

fejl i opdatering af mysql-database

Hejsa.

Jeg skal ændre id'et til id + 10000 i tabellen "pal2" og i samme ombæring opdatere 4 andre tabeller, hvor id'et indgår. Til det formål bruger jeg nedenstående script.

Imidlertid kan jeg efterfølgende se i databasen, at de 4 tabeller ikke opdateres lige konsekvent. Jeg kan ikke forstå hvorfor? Vil i hjælpe mig?

Scriptet ser ud som følger:

<?php

// #######  PAL  #######

$result50 = mysql_query("SELECT id FROM pal2 ORDER BY id");
while($row50 = mysql_fetch_array($result50)){
    $id_gl = $row50[id];
    $id_ny = $row50[id] + 10000;
    mysql_query("UPDATE pal2 SET id = '$id_ny' WHERE id = '$id_gl'");
    print "<p><b>Pal: $id_gl -> $id_ny</b></p>";

// #######  BØRS  #######
   
    $result2 = mysql_query("SELECT id FROM brugt2 WHERE user = '$id_gl'");
    $number2 = mysql_num_rows($result2);
    if ($number2 > 1) {
        while($row2 = mysql_fetch_array($result2)){
            mysql_query("UPDATE brugt2 SET user = '$id_ny' WHERE id = '$row2[id]'");
            }
        print "<p>Børs: $number2 stk</p>";
        }

// #######  FORUM INDLÆG  #######

    $result3 = mysql_query("SELECT id FROM forum_indlaeg2 WHERE bruger = '$id_gl'");
    $number3 = mysql_num_rows($result3);
    if ($number3 > 1) {
        while($row3 = mysql_fetch_array($result3)){
            mysql_query("UPDATE forum_indlaeg2 SET bruger = '$id_ny' WHERE id = '$row3[id]'");
            }
        print "<p>Forum indlæg: $number3 stk</p>";
        }

// #######  FORUM BESKEDER  #######

    $result4 = mysql_query("SELECT id FROM forum_besked2 WHERE afsender = '$id_gl'");
    $number4 = mysql_num_rows($result4);
    if ($number4 > 1) {
        while($row4 = mysql_fetch_array($result4)){
            mysql_query("UPDATE forum_besked2 SET afsender = '$id_ny' WHERE id = '$row4[id]'");
            }
        print "<p>Forum beskeder: $number4 stk</p>";
        }

// #######  SMS  #######

    $result5 = mysql_query("SELECT id FROM sms2 WHERE pal = '$id_gl'");
    $number5 = mysql_num_rows($result5);
    if ($number5 > 1) {
        while($row5 = mysql_fetch_array($result5)){
            mysql_query("UPDATE sms2 SET pal = '$id_ny' WHERE id = '$row5[id]'");
            }
        print "<p>SMS: $number5 stk</p>";
        }
       
}
?>
Avatar billede lademan Novice
27. august 2003 - 10:25 #1
På forhånd tak for hjælpen!
Avatar billede tipsen Nybegynder
27. august 2003 - 10:33 #2
Har du prøvet den lidt simplere udgave med SET id = id + 10000 - det kræver ikke så meget kode!
Avatar billede lademan Novice
27. august 2003 - 10:37 #3
ahhhh...
Avatar billede lademan Novice
27. august 2003 - 10:37 #4
gider du komme med et eksempel?
Avatar billede lademan Novice
27. august 2003 - 10:38 #5
ahhh - nu ser jeg det...
Avatar billede lademan Novice
27. august 2003 - 10:39 #6
:-))
Avatar billede lademan Novice
27. august 2003 - 10:42 #7
Men det kan vist ikke gøres meget simplere, fordi hvis id = 0 i en af de 4 tabeller skal den forblive 0... ?
Avatar billede lademan Novice
27. august 2003 - 10:48 #8
ahh så sætter jeg bare en WHERE restriktion ind... :-)
Avatar billede tipsen Nybegynder
27. august 2003 - 11:15 #9
Det er jo en helt lille dialog du har haft med dig selv her - det var da vist ok du lige fik 10 min til at tænke lidt over det :-)
Avatar billede lademan Novice
27. august 2003 - 11:25 #10
Jeg har fået det til at virke i de fleste tabeller, men de steder, hvor jeg indfører en WHERE restriktion vil den ikke opdatere databasen:

mysql_query("UPDATE forum_indlaeg2 SET bruger = bruger + 10000 WHERE bruger != 'N');
Avatar billede lademan Novice
27. august 2003 - 11:25 #11
How come??
Avatar billede tipsen Nybegynder
27. august 2003 - 11:31 #12
bruger = bruger + 10000 kræver at bruger er et numerisk felt - derfor kan det ikke indeholde teksten 'N' - så der må være en grundlæggende fejl i din db-struktur.
Avatar billede lademan Novice
27. august 2003 - 11:31 #13
Er det noget en tipsen eller en anden ekspert ved noget om?
Avatar billede tipsen Nybegynder
27. august 2003 - 11:35 #14
?
Avatar billede lademan Novice
27. august 2003 - 11:40 #15
Tak for tippet. Afprøver det lige :-)
Avatar billede lademan Novice
27. august 2003 - 12:04 #16
Jeg har ændret på strukturen så den er korrekt (int(11), men følgende virker stadig ikke:

mysql_query("UPDATE forum_indlaeg2 SET bruger = bruger + 10000 WHERE bruger != 0);
Avatar billede lademan Novice
27. august 2003 - 12:06 #17
ahhh, der mangler jo et "...
Avatar billede tipsen Nybegynder
27. august 2003 - 12:32 #18
og hvis du ikke har negative værdier er bruger > 0 også en mulighed.
Avatar billede lademan Novice
27. august 2003 - 12:55 #19
tak for hjælpen ven. så fandt jeg endelig ud af det.
Avatar billede lademan Novice
27. august 2003 - 16:07 #20
the end
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