questa è la classe che uso per il db, la elenco tutta per correttezza
codice:class TMySQL { private $hostname; private $username; private $password; private $dbname; private $active; // variabile di controllo sulla connessione dell'istanza private $link; // connessione attualmente attiva private $tab_log_error; private $last_query; /* ---------- __CONSTRUCT ---------- */ // l'host e il database saranno sempre i soliti public function __construct($host, $db) { $this->active = false; // nessuna connessione attiva $this->link = false; // $this->hostname = $host; $this->dbname = $db; $last_query = NULL; } /* ---------- __DESTRUCT ---------- */ public function __destruct() { $this->disconnect(); } /* ---------- CONNECT ---------- */ // ad ogni connessione ci riferiremo sempre come username // nel caso l'accesso sia privilegiato, verrà passato il parametro alla funzione public function connect( $username = "username", $password = "password" ) { // se non c'è ancora una connesione if( $this->active == false ) { // mi assicuro che i parametri vengano inseriti correttamente $name = ($username == NULL) ? "username" : ($username == "") ? "username" : $username; $pass = ($password == NULL) ? "password" : ($password == "") ? "password" : $password; $username = trim( filter_var($name,FILTER_SANITIZE_STRING) ); $password = trim( filter_var($pass,FILTER_SANITIZE_STRING) ); // utilizzo l'username e password passati come parametro $this->link = mysql_connect( $this->hostname, $username, $password ) or die("Impossibile stabilire una connessione."); // se mi sono connesso, mi aggancio al database $select_db = mysql_select_db($this->dbname, $this->link) or die("Impossibile connettersi al database."); if( $select_db == false ) echo $_GET['sql_error'] = $this->log_error(); // connessione avvenuta con successo $this->active = true; // l'username e password verranno confermati solo dopo l'avvenuta connessione $this->username = $username; $this->password = $password; return true; } return false; } /* ---------- DISCONNECT ---------- */ // la funzione disconnette la sua connessione. non altre. public function disconnect() { if( $this->active == true ) { // ovviamente l'istanza fa sempre e solo riferimento a se stessa $status = mysql_close( $this->link ); if( $status == false ) $_GET['sql_error'] = $this->log_error(); // disconnessione avvenuta con successo $this->active = false; $this->link = false; return true; } return false; } // il parametro $query, per il metodo query($query) deve essere una stringa /* ---------- QUERY ---------- */ // $query => string public function query( $query ) { if( is_string($query) ) { // tengo traccia dell'ultima query per il log_error $this->last_query = $query; // copio la stringa passata $string = $query; // eseguo l'interrogazione $query = mysql_query($string); // se non è stata eseguita l'interrogazione visualizzo l'errore relativo if( $query == false ) $_GET['sql_error'] = $this->log_error(); return $query; } return false; } /* ---------- EXTRACT ---------- */ // query => resource public function extract_row( $result ) { if( $this->active == true ) { if( is_resource($result) ) { $obj = mysql_fetch_object($result); if( $obj == false ) $_GET['sql_error'] = $this->log_error(); return $obj; } else { $_GET['sql_error'] = $this->log_error(); } } else { $_GET['sql_error'] = $this->log_error(); } } public function log_error() { /* if( mysql_error($this->link) ) { $date = getdate(); $error = mysqli_error($this->link); $query = $this->last_query; $this->query("INSERT INTO ".$tab_log_error." (date, error, last_query) VALUES ('".$date."','".$error."','".$query."')"); return mysql_error($this->link); } */ return mysql_error($this->link); } }

Rispondi quotando