You are not logged in.

  • Login

1

Friday, May 27th 2011, 10:03am

PHP mysqli_close() Warnung, aber warum?

Hi,

ich habe eine große Klasse die ca. so aufgebaut ist:

PHP Quellcode

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
class Database{
 
protected $con;
 
public function __construct($host, $user, $pass, $dbnm){
 $this->con = mysqli_connect($host, $user, ...);
}
 
public function __invoke($sql){
 mysqli_query($this->con, $sql);
}
 
public function __destruct(){
 mysqli_close($this->con);
}
}


Wenn ich davon eine Instanz erzeuge (connect) und auch wenn ich sie als Funktion aufrufe (__invoke(query)) funktioniert alles gut, die verbindung wird hergestellt und ich kann ein Query an den Server abschicken. Aber wenn dann der Destruktor aufgerufen wird, dann kommt immer diese Warnmeldung (sie kommt auch bei mysqli_error()).

Quoted


Warning: mysqli_close() [function.mysqli-close]: Couldn't fetch mysqli in C:\xampp\htdocs\dcdb\classes\Database.class.php on line 99

Warning: mysqli_error() [function.mysqli-error]: Couldn't fetch mysqli in C:\xampp\htdocs\dcdb\classes\Database.class.php on line 109


ich frage mich, warum? und wird trotz der Warnung die Verbndung zum Server geschlossen?

2

Friday, May 27th 2011, 12:47pm

Gelöst!!!

Lösung:

Quoted


1. PHP prüft auf offene, interne Handler
1.1. PHP findet eine offene MySQL Verbindung
1.2. PHP schließt diese Verbindung
2. PHP sucht im Stack nach verbliebenden Objekten, um diese zu zerstören
2.1. PHP findet Instanz von `Database`
2.2. PHP ruft Destruktor von `Database` auf
2.2.1. Destruktor will mysqli_close aufrufen
2.2.2. mysqli_close bemerkt, dass Verbindung bereits geschlossen ist
2.2.2.1. Es wird eine Warnung ausgegeben

Similar threads

Social bookmarks