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);
}
}