Avatar billede petan Nybegynder
03. november 2004 - 18:38 Der er 17 kommentarer og
2 løsninger

Fejl når jeg prøver at lukke forbindelse til MySql

Hej

Jeg får denne fejl når jeg prøver at lukke min database forbindelse:

Warning: mysql_close(): 5 is not a valid MySQL-Link resource

Jeg har to sider.

Index.php
-------------------------------

include("connection.php");
dbConn(db);
rs = mysql_query('select sidebeskrivelse, sidemappe FROM sideindhold where sideAktiv = true order by sideid');
if (!$rs)
{
die('Could not query:' . mysql_error());
}   
                           
while ($row = mysql_fetch_object($rs))
{
  echo "<a href=?page=$row->sidemappe>"."$row->sidebeskrivelse"."<BR>"."</a>";
}

closeDb();

connection.php
------------------------------
function dbConn ($database)
{
    $conn = mysql_connect('localhost', '', '');
    if (!$conn) {
      die('Could not connect: ' . mysql_error());
    }

    $dbvalg = mysql_select_db("$database");
    if (!$dbvalg) {
      die('Unable to select database:' . mysql_error());
    }
}

function closeDb ()
{
    mysql_close($conn);
}


Jeg har googlet lidt, og fundet noget der omhander det på denne side - http://dev.mysql.com/doc/mysql/en/mysql_close.html men er ikke helt sikker på hvordan jeg løser problemet.

Problemet er opstået efter at jeg har lavet min connection til en funktion som jeg har placeret på en anden fil.

Hvordan løser jeg dette problem, uden at skulle skrive connection koden hver gang jeg skal bruge den?

På forhånd tak!

/Petan
Avatar billede jaw Nybegynder
03. november 2004 - 18:42 #1
Prøvet mysql_close(); uden $conn ?
Avatar billede michael_stim Ekspert
03. november 2004 - 18:43 #2
Eller lad väre med at lukke den. Det behöver man ikke i PHP så vidt jeg husker, den gör det selv.
Avatar billede hmortensen Nybegynder
03. november 2004 - 18:44 #3
Og fra manualen:
"Brugen af mysql_close() er som regel ikke nødvendig, da ikke vedvarende link, normalt bliver lukket automatisk, når scriptet er eksekveret."
Avatar billede -zonic- Nybegynder
03. november 2004 - 18:45 #4
Hvorfor?

dbConn(db);
Avatar billede squashguy Nybegynder
03. november 2004 - 18:46 #5
læs her http://dk2.php.net/variables.scope og du vil vide hvorfor..
Avatar billede -zonic- Nybegynder
03. november 2004 - 18:47 #6
hmortensen --> Er det ikke kun i de nye versioner af mysql at det er faktum?

Mener ikke, at det var sådan i de første versioner jeg sad og legede med. Men efter at have flytte webhoteludbyder har jeg oplevet det samme problem som ovennævnte?
Avatar billede jaw Nybegynder
03. november 2004 - 18:51 #7
Der er flere udbydere, der sætter max. på antal connections, hvilket der kan gå "ged" i, hvis ikke man lukker sin forbindelse...
Avatar billede petan Nybegynder
03. november 2004 - 18:52 #8
jaw: Det virker fint hvis jeg undlader $conn, men bliver forbindelsen så også lukket?

Kan det ikke blive et problem hvis jeg har mange hits på siden og forbindelse til databasen ikke bliver lukket med det samme?
Avatar billede hmortensen Nybegynder
03. november 2004 - 18:56 #9
Hvis du ikke sætte en link identifier på mysql_close() vil den lukke den sidst brugte, og da du kun har en, vil det ikke være noget problem
Avatar billede jaw Nybegynder
03. november 2004 - 18:57 #10
Det bliver sikkert ikke noget problem. Når du ikke definerer en $conn, så vil den lukke alle de forbindelser der er. Men check, om din $conn indeholder det den egentlig skal - måske noget er forsvundet, eller den bliver returneret forkert som variabel i din funktion?!

Men som sagt, er mysql_close(); nok, medmindre du har flere forskellige connections, der ikke skal lukkes samtidigt...
Avatar billede petan Nybegynder
03. november 2004 - 18:59 #11
jeg har flere connections, men de kommer på forskellige steder i index.php filen - dvs. jeg har ikke brug for at holde nogen af dem åbne indtil jeg åbner en ny.
Avatar billede squashguy Nybegynder
03. november 2004 - 18:59 #12
mysql_close() lukker ikke alle aktive forbindelser, men den sidste som er åbnet
Avatar billede jaw Nybegynder
03. november 2004 - 19:00 #13
Oookey, der var jeg så for hurtig åbenbart, det beklager jeg...
Avatar billede hmortensen Nybegynder
03. november 2004 - 19:05 #14
Der er ingen grund til at åbne forbindelse til samme database server flere gange under samme script kørelse, så med mindre du forbinder til forskellige database servere, kan du nøjes med at åbne forbindelsen i starten og lukke i slutningen.
Avatar billede petan Nybegynder
03. november 2004 - 19:06 #15
ok alle, tak. Jeg tror jeg fik svar på mit spm.

jaw, hmortensen og squashguy: hvis i kommer med et svar får i point.
Avatar billede hmortensen Nybegynder
03. november 2004 - 19:10 #16
Det var så lidt
Avatar billede jaw Nybegynder
03. november 2004 - 19:11 #17
Ja, anytime...
Avatar billede petan Nybegynder
04. november 2004 - 17:14 #18
jeg venter lige et par timer, og hvis der ikke er kommet svar fra squashguy, bliver pointne fordelt til jer andre.
Avatar billede petan Nybegynder
04. november 2004 - 20:27 #19
Så lukker jeg.
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