Avatar billede madsjepsen Nybegynder
26. oktober 2011 - 01:07 Der er 16 kommentarer

Kan flere MySQL databaser dele én PHP-fil?

Hej eksperter

Jeg har et ret simpelt spørgsmål der lyder på, om flere databaser i MySQL kan dele den samme PHP-fil. Jeg har nemlig et cms-system, der egentlig er det samme, men det skal blot indeholde noget forskelligt - og jeg tænkte derfor det ville være åndssvagt at uploade præcis de samme PHP-filer 5 gange, hvis der er mulighed for kun at oprette 5 databaser. :-)

Vh Mads Jepsen
Avatar billede arne_v Ekspert
26. oktober 2011 - 02:01 #1
Hvordan skal PHP scriptet vide hvilken af de 5 databaser der skal bruges?
Avatar billede arne_v Ekspert
26. oktober 2011 - 02:04 #2
Det boer kunne lade sig goere, men indtil du besvarer spoergsmaalet i #1 er det svaert at sige hvordan.
Avatar billede PeteSK Nybegynder
26. oktober 2011 - 07:19 #3
Ja, men om det ville være anbefalet er så en anden sag ;)
Avatar billede acore Ekspert
26. oktober 2011 - 09:26 #4
Ja, det kan lade sig gøre, og jeg kan også se situationer, hvor det er anbefalelsesværdigt:

Lad os antage, at du driver x webshops, der er baseret på fuldstændigt samme system, og at du ønsker at hoste dem samme sted (fx for at kunne lave samlet statistik).

Et CMS system kan have databasens navn "hardcoded" i en enkelt fil. Hvis det er tilfældet, skal du modificere den, så den vælger den rigtige database alt efter hvor kunden kommer fra.

I så fald har du kun et sæt kode at vedligeholde. Det bliver også nemt at håndtere backups.
Avatar billede The_Buzz Novice
26. oktober 2011 - 09:51 #5
Du kan sagtens lave flere connections fra eet php script, og også holde dem åbne alle på een gang.

Jeg har selv gjort det flere gange for kunder der havde en database for hver kunde, men det er skod programmering at gøre det - og jeg vil seriøst advare dig mod at gøre det stunt.

Saml alt dit information til de enkelte sites i en database i stedet for at sprede dig ud på mange. Der er ingen ide eller formål i at sprede sig, med mindre du har et site der VIRKELIG stort.
Avatar billede madsjepsen Nybegynder
26. oktober 2011 - 13:03 #6
Hej, og mange tak for alle svarene!
Jeg står i den sistuation, at jeg har et CMS system på min server, hvor jeg tilbyder at oprette forskellige virksomheder. I systemets config fil, skal man jo angive en database - så forslaget om at samle alle informationerne i en enkelt database fungerer desværre ikke.

Jeg tænker lidt på at kombinere det med et login, så brugernavnet angiver, hvilken database informationerne skal hentes fra, er dette muligt?

acore: Jeg vil meget gerne høre mere om hvordan man angiver hvilken database den skal hente informationer fra, alt efter hvor man kommer fra.
Avatar billede arne_v Ekspert
26. oktober 2011 - 14:19 #7
Du skal have en db config fil per db og have logik i din PHP kode som bruger den rigtige config fil.

Men igen: har du bestemt dig for hvad der skal bestemm ehvilken database der skal bruges??
Avatar billede madsjepsen Nybegynder
26. oktober 2011 - 14:26 #8
arne_v: Jeg må nok erkende, at jeg i første omgang ignorerede dit svar, da det egentlig lidt var at besvare spørgsmålet, men spørgsmålet selv. Nej, jeg ved ikke hvordan PHP-scriptet skal vide hvilken database det er den skal hente informationer fra, og det er derfor jeg spørger her inde. Som tidligere skrevet kunne jeg forestille mig, at man kunne finde ud af noget, så brugernavnet passer sammen med navnet på databasen, som php-filen skal lave udtræk fra.

Hvordan vil du lave "logik i min PHP kode, så den bruger den rigtige config"? :-)

Vh Mads
Avatar billede arne_v Ekspert
26. oktober 2011 - 14:36 #9
Hvis du kan beskrive logikken for hvordan koden skal bestemme hvilken database der skal bruges naar jeg sender en request fra min PC, saa kan vi komme med ideer til hvordan det implementeres. Men vi kan ikke forklare dig hvordan din app skal virke.
Avatar billede arne_v Ekspert
26. oktober 2011 - 14:39 #10
$cfg = some_magic_that_determines_the_config_to_use();
include($cfg);

er nemt nok.

Men du skal forklare hvordan some_magic_that_determines_the_config_to_use skal fungere!
Avatar billede madsjepsen Nybegynder
26. oktober 2011 - 15:40 #11
Jeg må være ærlig og sige, at PHP kodning ikke lige er min stærkeste side - men jeg ved derimod en del om databaser. Jeg har ikke brug for hjælp til min app overhovedet, og set i bakspejlet skaber det nok bare mere forvirring at jeg nævnte det i starten.

Jeg tænkte noget i stil med:

<?php
$db_host = "localhost";
$db_name = "KUNDENAVN";
$db_user = "user";
$db_pass = "pass";
?>

Hvor kundenavnet højst sandsynligt skulle hentes fra det brugernavn, man er logget ind med, for at komme ind på mit system. Giver det mening??
Avatar billede arne_v Ekspert
26. oktober 2011 - 15:48 #12
Jeg formoder at databasen indeholder brugernavn/password.

D.v.s. at du skal  have fat i den rigtige database for at kunne logge brugeren ind.

Saa kan du ikke bruge brugernavn til at vaelge database med.
Avatar billede arne_v Ekspert
26. oktober 2011 - 15:48 #13
Problemet er 100% app og 0% db, saa du har behov for hjaelp til din app.
Avatar billede madsjepsen Nybegynder
26. oktober 2011 - 16:12 #14
Lad os nu antage, at dette system overhovedet ikke har noget med en app at gøre - det er altså "blot" en hel almindelig hjemmeside - så slipper vi for det problem for denne gang! :-)

Selve databasen indeholder ikke et brugernavn/password, det er blot til adgangen via phpMyAdmin. Den rigtige database vil jeg få fat i, ved at nævne brugerens ID/kundenavn, kald det hvad du vil.

Lad os antage, at en person logger på cms'et med følgende oplysninger:
b: 12345
k: xxxxx

Så vil jeg høre, om det er muligt, at min tilslutning til databasen vil ligne noget i stil med:
<?php
$db_host = "localhost";
$db_name = "echo "".$row['userid']."";";
$db_user = "user";
$db_pass = "pass";
?>

.. hvor 'userid' naturligvis vil være 12345 fra tidligere nævnt eksempel. Igen, php er ikke min skarpe side ;-)

Tak for hjælpe ind til videre!
Avatar billede arne_v Ekspert
26. oktober 2011 - 16:31 #15
En hjemme side der bruger en database er en app!

(en web app mere praecist)
Avatar billede arne_v Ekspert
26. oktober 2011 - 16:34 #16
Siger du at du har:

1 faelles database som alle skal verficeres imod ved login
N databaser for content som der skal vaelges udfra login

??
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
Computerworld tilbyder specialiserede kurser i database-management

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