Avatar billede nph12 Nybegynder
01. januar 2008 - 22:11 Der er 10 kommentarer og
1 løsning

Kalde database, hvordan?

Hej
Jeg er lige startet på php/mysql. Hvordan kalder man sin database?

Jeg har set, at man kan gøre sådan:

<?php
mysql_connect('localhost', 'root', 'password');
mysql_select_db('database');
?>

Er det en god måde, at kalde sin database på? Er databasen så ikke åben hele tiden?

Jeg har tænkt på, om det ikke var en idé at lave en database-funktion. Altså kalde databasen med en sql-streng. Er det smart???

Funktionen skal også håndtere evt. fejl i forbindelse med database kaldet. Er der andet som vel være hensigtmæssigt at tilføje til funktionen?
Avatar billede arne_v Ekspert
01. januar 2008 - 22:24 #1
Indtil du kalder mysql_close()

Du kan også være lidt mere eksplicit:

$con = mysql_connect("host", "username", "password") or die(mysql_error());
mysql_select_db("database", $con) or die(mysql_error());
...
mysql_close($con);

Hvis du skal til at lave noget sriøst bør du absolut lave dig noget genbrugeligt
kode til database håndtering, men start nu med noget relativt simpelt.
Avatar billede nph12 Nybegynder
02. januar 2008 - 21:10 #2
Hvis jeg skulle lave noget mere genbrugeligt kode til database håndtering, hvordan ser en sådanne funktion se ud?
Avatar billede nph12 Nybegynder
03. januar 2008 - 20:20 #3
arne v, opret et svar hvis du vil have point.
Avatar billede arne_v Ekspert
04. januar 2008 - 03:00 #4
Genbrugelig database kode kan laves på mange måder.

Du kan prøve at studere forskellige løsninger såsom PEAR MDB, frameworks som CakePHP og
Symphony, kendte PHP løsninger (f.eks. CMS/Forum løsninger) og se hvad du synes
giver mening.
Avatar billede arne_v Ekspert
04. januar 2008 - 03:00 #5
Og et svar.
Avatar billede nph12 Nybegynder
04. januar 2008 - 22:09 #6
OK. Jeg vil prøve at lave to funktioner, hvor den ene er database funktion og den anden er en funktion som kalder database funktionen med en simpel sql-streng. Database funktionen returnere indholdet tilbage til den anden funktion.
Avatar billede nph12 Nybegynder
05. januar 2008 - 18:14 #7
Jeg har fået lavet database funktionen, så der kan skrives til databasen, men jeg kunne godt tænke mig, at databasen funktionen også kunne håndtere når der skal læses fra databasen. Database funktionen skal returnere resultatet af forespørgelsen tilbage til funktionen. Altså, hvis 'function query' kaldte databasen funktionen med en select sætning.

<?php
function database ($query)
{
    $connect = mysql_connect('localhost', 'root', 'password')
        or die("Kunne ikke få forbindelse til databasen");
    mysql_select_db('database') or die("Kan ikke få forbindelse til den valgte database");;
    $result = mysql_query($query) or die("Forespørgslen mislykkedes");

    // Luk forbindelsen
    mysql_close($connect);
}

function query()
{
    database("INSERT INTO personer (fornavn, efternavn) VALUES ('Anders', 'And')");
}

query();
?>
Avatar billede arne_v Ekspert
05. januar 2008 - 19:09 #8
Du laver vel en funktion som returnerer et array eller et array af arrays med
resultatet fra en given SELECT.
Avatar billede nph12 Nybegynder
05. januar 2008 - 23:29 #9
Jeg kan godt lave en ny database funktion som returnere resultatet i et array.

Jeg kunne godt tænke mig, at samle de to database funktioner i en. Altså en database funktion som kan håndtere både læsninger og skrivninger til databasen. Jeg kan bare ikke lige se, hvordan man kan gøre dette.
Avatar billede arne_v Ekspert
05. januar 2008 - 23:36 #10
Det vil du ikke.

En PHP fil med 2 funktioner eller en PHP fil med 1 klasse med 2 metoder.

Men ikke 1 funktion som laver både INSERT og SELECT.
Avatar billede nph12 Nybegynder
05. januar 2008 - 23:57 #11
OK. Mange tak for hjælpen.
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