WN

WN (https://www.wn.se/forum/index.php)
-   Serversidans teknologier (https://www.wn.se/forum/forumdisplay.php?f=4)
-   -   Optimera MySQL-databasen med ett PHP-script (https://www.wn.se/forum/showthread.php?t=11558)

Spindel 2006-01-01 15:47

Har en kolumn i en MySQL-databas med över 3500 poster. Saken är att runt 500 av dem i själva kolumnen är unika, resterande är dubbellagring vilket inte är speciellt optimerat.

Jag har skapat en ny tabell där jag har lagt till alla 500 unika namn med unikt ID. Nu vill jag ändra så att namnen i den andra tabellen ändras till ID-nummrena istället.

Någon som har någon idé hur jag ska göra detta med hjälp av PHP? Skriv också själva koden och hur den fungerar så jag lär mig också ;)

För att sammanfatta, har en tabell som heter spel. I den finns en kolumn som heter utvid. Har gjort en ny tabell som heter utvecklare och vill nu ändra så att namnen i utvid (i tabellen spel) blir ID-nummret som representerar utvecklaren i kolumnen id (i tabellen utvecklare).

DeSoto 2006-01-01 17:36

Det är väl bara att läsa in datan från båda tabellerna i vars en array, och sen köra en update-sats för varje post?

Spindel 2006-01-01 17:48

Citat:

Originally posted by DeSoto@Jan 1 2006, 17:36
Det är väl bara att läsa in datan från båda tabellerna i vars en array, och sen köra en update-sats för varje post?
Mina PHP-kunskaper är tyvärr inte så bra, vet du ifall du skulle kunna visa kod-exempel?

DeSoto 2006-01-01 19:13

Mja, den tiden är förbi då jag programmerade gratis åt folk. =) Men om jag har förstått det rätt, så har du tidigare haft data om utvecklaren i samma tabell som spel, men vill nu bryta ut datan om utvecklaren till en egen tabell och koppla dem med ett id?

Spindel 2006-01-01 19:33

Ja, det stämmer bra det.

tydal 2006-01-01 20:37

Jag kan fortfarande programmera gratis åt folk. I alla fall såna här enkla grejer. Du behöver bara läsa in utvecklartabellen i en array och så uppdatera speltabellen utifrån den.

Steg 1, läsa in tabellen i en array: (byt ut allt som står med stora bokstäver)

Kod:

<?
 *$result = mysql_query("select ID-KOLUMNEN, UTVECKLARNAMNET from UTVECKLARTABELLEN");
 *while ($r = mysql_fetch_array($result))
 *{
 * *$utvecklare[$r['ID-KOLUMNEN']] = $r['UTVECKLARNAMNET'];
 *}
?>

Steg 2, uppdatera speltabellen:

Kod:

<?
 *foreach ($utvecklare as $id => $namn)
 *{
 * *mysql_query("update SPELTABELLEN set utvid = '$id' WHERE utvid = '$namn'");
 *}
?>

(Backup och sånt där innan förstås eftersom jag inte har någon möjlighet att testa koden.)


Alla tider är GMT +2. Klockan är nu 18:31.

Programvara från: vBulletin® Version 3.8.2
Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
Svensk översättning av: Anders Pettersson