PHP-Neuling: Frage zum Beenden einer Verbindung

king_jo_baby

Erfahrenes Mitglied
Ich habe mich nun seit einigen Tagen mit PHP auseinander gesetzt und fange langsam an da durch zu steigen.
Nun stehe ich aber vor folgendem Problem:

So sieht mein Code aus

PHP:
<?php

$verbindung = @mysql_connect('hostname','username','passwort');
if($verbindung)
{
	echo 'Verbindung hergestellt';
}
else
{
	echo 'Verbindung konnte nicht hergestellt werden';
}

mysql_close();

if($verbindung)
{
	echo 'Verbindung besteht noch immer';
}
else
{
	echo 'Verbindung wurde beendet';
}

?>

Was bei mir nun der fall ist das er mir im zweiten echo sagt das die Verbindung noch immer besteht, obwohl ich den mysql_close Befehl gegeben habe.
Das Verwirrt mich nun ein bisschen ;(

Was mache ich falsch?

lg
kjb
 
Anhand der PHP-Doku wuerde ich sagen, dass der folgenden Code fuer Dich besser waere, denn nur durch einen Aufruf von mysql_close() veraendert sich die Resource nicht. mysql_close() gibt aber einen Boolean zurueck, repraesentativ fuer Erfolg oder Misserfolg des Aufrufes.
PHP:
if (!mysql_close($verbindung))
{ 
    echo 'Verbindung besteht noch immer'; 
} 
else 
{ 
    echo 'Verbindung wurde beendet'; 
}
 
Der mysql_close()-Funktion muss die Verbindungskennung als Parameter übergeben werden, soll eine spezielle Verbindung geschlossen werden. Ist keine explizit angegeben, wird die zuletzt geöffnete Verbindung geschlossen.
 
In dem du if($verbindung) erneut aufrufst, wird auch die Funktion mysql_connect() erneut ausgeführt und somit besteht wieder eine Verbindung zum MySQL-Server.
 
In dem du if($verbindung) erneut aufrufst, wird auch die Funktion mysql_connect() erneut ausgeführt und somit besteht wieder eine Verbindung zum MySQL-Server.
Wie kommst du denn darauf? Dann müsste ja auch Folgendes funktionieren:
PHP:
$foo = printf('Hallo Welt!');
if( $foo ) {
	echo '$foo existiert und besitzt den Wert '
	var_dump($foo);
}
unset($foo);
if( !$foo ) {
	echo '$foo existiert nicht mehr!';
}
Doch „Hallo Welt!“ wird nur einmal ausgegeben. Zu dem sollte die zweite if-Kontrollstruktur einen Fehler ausgeben, da versucht wird, auf die undeklarierte Variable „$foo“ zuzugriffen.
 
Er fragt doch durch die if-Anweisung den booleschen Wert für $verbindung, also für die Verbindung zum Server ab. Und da er verbinden kann, komm TRUE zurück. Egal ob er jetzt davor die Verbindung geschlossen hatt oder nicht. Oder hab ich jetzt ein total krassen Denkfehler?
 
Die Variable $verbindung erhält bei der ersten Zuweisung den Rückgabewert der mysql_connect()-Funktion, was im Erfolgsfall eine MySQL-Verbindungsressource ist und nur im Fehlfall der boolesche Wert „false“. Es wird also nur der Rückgabewert gespeichert.
Ich weiß allerdings nicht, was mit dem Variablenwert nach dem Schließen der Verbindung passiert, ob dieser immer noch die (nun ungültige) MySQL-Verbindungskennung enthält oder nicht.
 
Dann müsste er ja auch mit unset($verbindung) die Verbindung zum Server beenden :suspekt:

Das probier ich gleich mal zuhause aus.
 
Nun hab ich ja eine Diskussion losgetreten :)
Naja mal sehen ich werde mich erstmal an dem ersten Beispiel versuchen, danke so weit.
Ich melde mich wieder

lg
kjb
 
Dann müsste er ja auch mit unset($verbindung) die Verbindung zum Server beenden :suspekt:
Nein, das stimmt auch nicht. Denn nur die Variable, in der die Verbindungskennung gespeichert ist, wird gelöscht, jedoch nicht die Verbindung selbst.
Das ist so, als ob jemand einfach eine Seite aus dem Telefonbuch reißt und sie aufisst. Die Seite fehlt zwar, die Telefonnummern existieren aber immer noch.
 
Zurück