PHP mysqli_close() Warnung, aber warum?

Diese Seite verwendet Cookies. Durch die Nutzung unserer Seite erklären Sie sich damit einverstanden, dass wir Cookies setzen. Weitere Informationen

  • PHP mysqli_close() Warnung, aber warum?

    Hi,

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

    Quellcode

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


    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()).


    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?
  • Gelöst!!!

    Lösung:

    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