Brug af AI afslører de svagheder, virksomheder allerede har opbygget gennem års cloud-transformation, nye SaaS-løsninger og fragmenterede sikkerhedssystemer.
Du har ikke lavet en tabel for hver bruger? Det lyder som mildest talt dårligt databasedesign - og det er meget mildt sagt.
Men du kan da lave en SHOW TABLES og ud fra dette løbe tabeller igennem og rette dem. Men man bør altså _aldrig_ have et dynamisk antal tabeller eller dynamisk antal felter i disse - kun dynamisk antal rækker i fastlåste tabelstrukturer.
barklund>> Øhh... jo jeg har lavet en tabel for hver bruger - og der smutter hurtigt 3-400 poster på hver bruger... Mener du stadig det er dårligt design og hvorfor? Hvis jeg nu gør noget i den her stil: $info = mysql_fetch_array(mysql_query("SHOW TABLE FROM $Database LIKE 'Bruger_'")); - er det sådan det fungerer - og hvordan finder jeg så antallet???
saucer>> Jeg må være blind - men hvor er det lige du mener, at der er et eksempel jeg kan bruge???
Det er normalt sådan man gemmer / laver en bruger karotek. Det du har lavet er noget lort og du vil hurtig laver en overkill + at din side vil gå død hvis du laver alt for mange samfletninger af bruger info..
engberg, så laver du en tabel til log, og en tabel til noget tredje, og en til noget fjerde - men kun en af hver. Ofte kommer man måske op på 30-40 tabeller med diverse brugerdata og så kan der være millioner af rækker i hver tabel. Jeg har også mysql-tabeller på 100 millioner rækker - det er intet problem, der er jo det, databasen er lavet til. Databasen er derimod _ikke_ lavet til at skalere i bredden og til at indeksere tabeller på tværs på den mærkelige måde, som du har lavet.
Nejnej, du laver 1 tabel med 1 række for hver bruger:
id | navn | email | køn | ...
Så laver du en anden tabel med for eksempel en log over, hvornår de har logget ind:
id | tidspunkt
Og her laver du så en ny række for hver gang, brugeren logger ind - hvis det for eksempel er sådan statistik, som du opsamler. Man må godt have flere tabeller med forskelligt udseende, der refererer til hinanden - det er sådan set konceptet i en database :)
Det du nu skal gøre er vel at lave en kopi af bruger db og omdøbe den til et unik navn.. eks. users. Når du så skal oprette flere brugere så skal du ikke create/lavet et nyt db men bare bruge INSERT INTO users () VALUES ()
Hmm... hvad så når der nu er 1000 brugere der på samme tid skal i kontakt med data i den samme tabel - er det ikke sværere end hvis de skal i hver sin tabel? Eller er det hip som hap om det er samme tabel, når bare det er samme database?
Og jeg har i øvrigt allerede tabellen til id | navn | email | køn | ...
- jeg troede i min autodidakte naivitet bare at det var smartere med flere tabeller....
Barklund - smid svar - det er vist dig der har hjulpet mig mest, selvom spørgsmålet har drejet sig lidt...
Synes godt om
Slettet bruger
12. oktober 2005 - 06:27#22
En database er lavet til at flere skal kunne bruge den på samme tid, så overlad den bekymring til andre :)
Og for lige... mysql_connect("localhost", "mysql_bruger", "mysql_kode"); $result = mysql_list_tables("mindb"); $num_rows = mysql_num_rows($result);
for ($i = 0; $i < $num_rows; $i++) { if(substr(mysql_tablename($result, $i), 0, 7) != "Bruger_") { continue; } $Tabel = mysql_tablename($result, $i); $result2 = mysql_query("SELECT * FROM $Tabel WHERE Type='$type'",$db) or die ($db_fejl.mysql_error()); while ($arr = mysql_fetch_array($result)) { GØR NOGET; } }
Hvis ikke du bruger mysql_free_result() efter while, vil den formodentlig blive ved at bruge som resultat i for-løkken. Og brug altid gerne mysql_free_result() når resultat ikke længere skal bruges
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.