Pagina 1 di 2 1 2 ultimoultimo
Visualizzazione dei risultati da 1 a 10 su 13

Discussione: classe sul database

  1. #1

    classe sul database

    Salve ho creato una classe per connettermi e chiudere un database:

    Codice PHP:
    class mysqlclass
    {
        
        private 
    $host="localhost";
        private 
    $user="root";
        private 
    $password="";
        
        public function 
    connect(){
            
            
    $database="network";
            
    $dbconn=mysql_connect($this->host,$this->user,$this->password);
            
    mysql_select_db($database,$dbconn);
            
        }
        
        public function 
    disconnect(){
            
            global 
    $dbconn;
            
    mysql_close($dbconn);
        }
        

    ma mi da questo errore:
    Warning: mysql_close(): supplied argument is not a valid MySQL-Link resource

  2. #2
    Devi rendere la connessione una proprietà della classe... poi puoi usare il magic method _destruct()

    Codice PHP:
    class mysqlclass
    {
        
        private 
    $host="localhost";
        private 
    $user="root";
        private 
    $password="";
        private 
    $dbconn;
        
        public function 
    connect(){
            
            
    $database="network";
            
    $this->dbconn=mysql_connect($this->host,$this->user,$this->password);
            
    mysql_select_db($database,$this->dbconn);
            
        }
        
        private function 
    disconnect() {
            if ( 
    $this->dbconn !== NULL ) {
                
    mysqli_close$this->dbconn );
                
    $this->dbconn NULL;
            }
        }

        public function 
    __destruct() {
            
    $this->disconnect();
        }

    Questa volta, più che un voto.. è favoreggiamento.

  3. #3
    Se dichiari $dbconn all'interno del metodo connect() è ovvio che esso non sia visibile nel metodo disconnect(). Inoltre così com'è è sbagliato in quanto non sarà visibile in nessun altro metodo.
    "Mai discutere con un idiota. Ti trascina al suo livello e ti batte con l'esperienza." (Oscar Wilde)

  4. #4
    io vedo che nella funzione disconnect usi mysqli_close( $this->dbconn ); MYSQLI è uan libreria ad oggetti, tu usi la libreria normale mysql; se volevi usare MYSQLI dovevi dichiararla prima ed usarla come esplicitamente scritto qua

  5. #5
    Originariamente inviato da Al_katraz984
    Devi rendere la connessione una proprietà della classe... poi puoi usare il magic method _destruct()

    Codice PHP:
    class mysqlclass
    {
        
        private 
    $host="localhost";
        private 
    $user="root";
        private 
    $password="";
        private 
    $dbconn;
        
        public function 
    connect(){
            
            
    $database="network";
            
    $this->dbconn=mysql_connect($this->host,$this->user,$this->password);
            
    mysql_select_db($database,$this->dbconn);
            
        }
        
        private function 
    disconnect() {
            if ( 
    $this->dbconn !== NULL ) {
                
    mysqli_close$this->dbconn );
                
    $this->dbconn NULL;
            }
        }

        public function 
    __destruct() {
            
    $this->disconnect();
        }

    Mi spieghi cosa è il magic method _destruct() mai usato e poi perche rendere privato la seconda funzione non può essere pubblica e chiamarla direttamente?

  6. #6
    Originariamente inviato da Emulman
    io vedo che nella funzione disconnect usi mysqli_close( $this->dbconn ); MYSQLI è uan libreria ad oggetti, tu usi la libreria normale mysql; se volevi usare MYSQLI dovevi dichiararla prima ed usarla come esplicitamente scritto qua
    si scusa l'ho copiato da un mio esempio basta togliere la i
    Questa volta, più che un voto.. è favoreggiamento.

  7. #7
    Originariamente inviato da techno
    Mi spieghi cosa è il magic method _destruct() mai usato e poi perche rendere privato la seconda funzione non può essere pubblica e chiamarla direttamente?
    The destructor method will be called as soon as there are no other references to a particular object, or in any order during the shutdown sequence.
    Qua trovi la spiegazione del metodo..

    il metodo è privato perchè non c'è nessuna esigenza che sia pubblico.. tanto viene richiamato all'interno della classe "as soon as there are no other references to a particular object". Non dovrai mai chiamarlo direttamente
    Questa volta, più che un voto.. è favoreggiamento.

  8. #8
    be capito il significato ma come chiamo la chiusura dalla funzione disconnect() o da __destruct ?

  9. #9
    Originariamente inviato da techno
    be capito il significato ma come chiamo la chiusura dalla funzione disconnect() o da __destruct ?
    tiè

    Codice PHP:

    class MioOggettoFighissimo{

    private 
    $fakeVar;

    public function 
    connect(){

    echo 
    __METHOD__." chiamato metodo\n";
    $this->fakeVar 'connesso';
    echo 
    __METHOD__." fakeVar is $this->fakeVar \n";

    }

    public function 
    disconnect(){

    echo 
    __METHOD__." chiamato metodo\n";
    $this->fakeVar 'disconnesso';
    echo 
    __METHOD__." fakeVar is $this->fakeVar \n";

    }

    public function 
    __destruct(){

    echo 
    __METHOD__." chiamato metodo\n";
    $this->disconnect();
    echo 
    __METHOD__." fakeVar is $this->fakeVar \n";

    }


    }

    $mioOggetto = new MioOggettoFighissimo();

    echo 
    "\n\n------\n\nchiamo sull'oggetto il metodo connect\n\n";
    $mioOggetto->connect();

    echo 
    "\n\n------\n\nchiamo sull'oggetto il metodo disconnect\n\n";
    $mioOggetto->disconnect();

    echo 
    "\n\n------\n\ncancello l'oggetto\n\n";
    $mioOggetto null
    forse così ti è più chiaro quello che sta succedendo al tuo oggetto
    IP-PBX management: http://www.easypbx.it

    Old account: 2126 messages
    Oldest account: 3559 messages

  10. #10
    m non se ne puo + di vedere ancora mysql !
    Use of this extension is discouraged. Instead, the MySQLi or PDO_MySQL extension should be used. See also MySQL: choosing an API guide and related FAQ for more information. Alternatives to this function include:
    mysqli_connect()
    PDO::__construct()
    Without faith, nothing is possible. With it, nothing is impossible
    http://ilwebdifabio.it

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2025 vBulletin Solutions, Inc. All rights reserved.