Gå til innhold

mysql_close() expects parameter 1 to be resource, null given


Anbefalte innlegg

Jeg har akkurat begynt å lære php. Bare for å prøve meg litt har jeg laget nedenstående programsnutt som skal la en bruker logge seg inn og ut av MySQL. Det ser ut til at den gjør det den skal, men jeg får en litt irriterende feilmelding: "Warning: mysql_close() expects parameter 1 to be resource, null given in /opt/lampp/htdocs/brukeradministrasjon/min_sql_admin.php on line 33".

 

Kan noen forklare hvorfor, og om det finnes en enkel løsning?

<?php
$db_server = null;

if (isset($_POST['bruker']) &&
   isset($_POST['passord']))
{
   $bruker = get_post('bruker');
   $passord = get_post('passord');    
   $db_server = mysql_connect('localhost', $bruker, $passord);    
   if(!$db_server) 
       echo ("Unable to connect to MySQL: " . mysql_error());
   else 
       {
       echo $bruker . " er logget in!<br /><br />";
       $query = "SHOW databases";
       $result = mysql_query($query);
       if(!$result)
           echo ("FEIL!" . mysql_error());
       else
           {
             $rows = mysql_num_rows($result);
             for($j = 0; $j < $rows; ++$j)
               {
               $row = mysql_fetch_row($result);
               echo $row[0] . "<br />";
               }
           }
       }
}

if (isset($_POST['logut']))
{
   mysql_close($db_server);   
   if(!$db_server)  echo "Logget ut!";
}


if(!$db_server)
{
echo <<<_END
<form action="min_sql_admin.php" method="post">
<pre>
Bruker  <input type="text" name="bruker" />
Passord <input type="text" name="passord" />
<input type="submit" value="LOG IN" />
</pre>
</form> 
_END;
}
else
{
echo <<<_END
   <form action="min_sql_admin.php" method="post">
   <pre>
   <input type="hidden" name="logut" value="yes" />
   <input type="submit" value="Log ut" />
   </pre>
_END;
}

function get_post($var)
{
   return $_POST[$var];   
}

?>

Lenke til kommentar
Videoannonse
Annonse

Når du kobler deg til mysql er det ikke sånn at denne koblingen varer helt til du kjører mysql_close(). Nei, den stenges hver gang en webside er ferdig loadet. Med andre ord vil ikke variabelen $db_server finnes når du havner i if isset($_POST['logut']) setningen. Derfor, flytt mysql_connect helt til toppen av scriptet. Det vil løse problemet. For øverig skal det ikke være nødvendig å bruke mysql_close() da, som nevnt, database forbindelsen stenges når php scriptet er ferdig kjørt/siden loadet.

Lenke til kommentar

Opprett en konto eller logg inn for å kommentere

Du må være et medlem for å kunne skrive en kommentar

Opprett konto

Det er enkelt å melde seg inn for å starte en ny konto!

Start en konto

Logg inn

Har du allerede en konto? Logg inn her.

Logg inn nå
  • Hvem er aktive   0 medlemmer

    • Ingen innloggede medlemmer aktive
×
×
  • Opprett ny...