Avatar billede michaeltajo Nybegynder
30. marts 2006 - 11:52 Der er 11 kommentarer og
1 løsning

Vil ikke lukke MySQL-forbindelse

Den følgende kode:

===========================================================

<?php

function error ( $msg ) {
    die ($msg);
}
   
// function for establishing connection to the database
function mydb_connect() {
    $dbhost = "host";
    $user = "user";
    $database = "database"; $passwd = "password";
    $db = mysql_connect($dbhost, $user, $passwd);
    if ( $db == 0 ) {
        error ("Connection to database on ’$dbhost’ failed");
    }
    if ( mysql_select_db($database, $db) == 0 ) {
        error ("Failed to select database ’$database’");
    }
    return $db;
}

echo '<p>Der er oprettet adgang til databasen</p>';
   
if (!(mysql_close($db))) {
    echo 'Der er noget galt';   
}
else echo '<p>Der er lukket for adgang til databasen</p>';

?>

=========================================================

giver følgende output:

Der er oprettet adgang til databasen

Warning: mysql_close(): supplied argument is not a valid MySQL-Link resource in /XXXXXXX/comments.php on line 34
Der er noget galt


Ja, den har ret i, at der er noget galt, MEN HVAD?

Kører på PHP Version 5.0.4 og MySQL Version 4.1.16
Avatar billede erikjacobsen Ekspert
30. marts 2006 - 11:55 #1
Overvej om du ikke skal kalde din funktion mydb_connect()
Avatar billede michaeltajo Nybegynder
30. marts 2006 - 12:00 #2
Hvorfor skal jeg kalde en funktion, som åbner en i forvejen åben forbindelse?
Avatar billede razmuz_dk Nybegynder
30. marts 2006 - 12:02 #3
Hm, er det ikke fordi din $db ikke er global?

[...]
// function for establishing connection to the database
function mydb_connect() {
    global $db;
    $dbhost = "host";
    $user = "user";
[...]
Avatar billede michaeltajo Nybegynder
30. marts 2006 - 12:04 #4
>>>razmuz_dk

Det lyder ikke så åndssvagt, laver lige en luk-funktion...
Avatar billede michaeltajo Nybegynder
30. marts 2006 - 12:08 #5
>>>erikjacobsen

Jo, selvfølgelig skal jeg kalde funktionen mydb_connect(). Man kon selvfølgelig ikke lukke en forbindelse, som aldrig er blevet åbnet...
(Må vist se at få noget mere søvn!)
Avatar billede razmuz_dk Nybegynder
30. marts 2006 - 12:12 #6
tajo > Du behøver ikke nødvendigvis at lave en luk-funktion. Du kan godt bruge mysql_close($db) hvis du bare sørger for at $db er global.

Hvis du laver en close-funktion, så skal du huske at $db også skal være global i dén funktion :)
Avatar billede michaeltajo Nybegynder
30. marts 2006 - 12:14 #7
Det virker nu - takket være Jer begge to. Kan ikke lægge nogle svar, så er der 30 points til hver?
Avatar billede erikjacobsen Ekspert
30. marts 2006 - 12:25 #8
;) Jeg samler slet ikke på point, tak.
Avatar billede michaeltajo Nybegynder
30. marts 2006 - 12:30 #9
>>> erik
Jeg kender dig godt i forvejen, samler du så på karma?
Avatar billede erikjacobsen Ekspert
30. marts 2006 - 12:33 #10
Nej tak. Kun dårlig karma - men jeg kigger nu aldrig på den ;)
Avatar billede michaeltajo Nybegynder
30. marts 2006 - 12:35 #11
>>> erik
Alt vel, så...
Avatar billede razmuz_dk Nybegynder
31. marts 2006 - 14:35 #12
:)
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