$dbhost = 'IP';
$dbusername = 'USERNAME';
$dbpasswd = 'PASSWORD';
$database_name = 'NOME_DATABASE';
$table = 'roomprices';
$connection = mysql_pconnect("$dbhost","$dbusername","$dbpasswd")
or die ("Couldn't connect to server.");
$db = mysql_select_db("$database_name", $connection) or die("Couldn't select database.");
//esegue una qualunque query, ritorna il risultato conforme alla query stessa
function Query_exec($sql){
$this->MyLog("SQL : $sql");
try { return $this->db->exec($sql); }
catch(PDOException $e){ $this->handle_sql_errors($sql, $e); }
}
//select, per estrarre tutti i dati della tabella, ritorna array dei dati con FETCH_NUM
function Query_select($sql){
$this->MyLog("SQL : $sql");
try { $sth = $this->db->prepare($sql); $sth->execute(); return $sth->fetchall(PDO::FETCH_NUM); }
catch(PDOException $e){ $this->handle_sql_errors($sql, $e); }
}
//select, per estrarre tutti i dati della tabella, ritorna array dei dati con FETCH_BOTH
function Query_select_b($sql){
$this->MyLog("SQL : $sql");
try { $sth = $this->db->prepare($sql); $sth->execute(); return $sth->fetchall(PDO::FETCH_BOTH); }
catch(PDOException $e){ $this->handle_sql_errors($sql, $e); }
}
//prepare -> bind -> execute, query con parametri
function Query_bind($sql,
$par1 ='', $par2 ='', $par3 ='', $par4 ='', $par5 ='', $par6 ='', $par7 ='', $par8 ='', $par9 ='', $par10='',
$par11='', $par12='', $par13='', $par14='', $par15='', $par16='', $par17='', $par18='', $par19='', $par20=''){
$this->MyLog("SQL : ".$sql);
$x = substr_count($sql, "?");
if ($x > 20) $this->MyErr("ERRORE : la query contiene più di 20 parametri, gestiti fino a 20");
try {
$sth = $this->db->prepare($sql);
if($x > 0) { $sth->bindParam(1, $par1);
if($x > 1) { $sth->bindParam(2, $par2);
if($x > 2) { $sth->bindParam(3, $par3);
if($x > 3) { $sth->bindParam(4, $par4);
if($x > 4) { $sth->bindParam(5, $par5);
if($x > 5) { $sth->bindParam(6, $par6);
if($x > 6) { $sth->bindParam(7, $par7);
if($x > 7) { $sth->bindParam(8, $par8);
if($x > 8) { $sth->bindParam(9, $par9);
if($x > 9) { $sth->bindParam(10, $par10);
if($x > 10) { $sth->bindParam(11, $par11);
if($x > 11) { $sth->bindParam(12, $par12);
if($x > 12) { $sth->bindParam(13, $par13);
if($x > 13) { $sth->bindParam(14, $par14);
if($x > 14) { $sth->bindParam(15, $par15);
if($x > 15) { $sth->bindParam(16, $par16);
if($x > 16) { $sth->bindParam(17, $par17);
if($x > 17) { $sth->bindParam(18, $par18);
if($x > 18) { $sth->bindParam(19, $par19);
if($x > 19) { $sth->bindParam(20, $par20); } } } } } } } } } } } } } } } } } } } }
return $sth->execute(); }
catch(PDOException $e){ $this->handle_sql_errors($sql, $e); }
}
function close(){
unset($this->db);
}
//scrive un testo nel log di PHP
function MyLog($text) {
error_log($text, 0); // commentare questa riga se in produzione, no log !
}
//scrive un errore nel log di PHP e interrompe l'esecuzione
function MyErr($text) {
error_log($text, 0);
print "ERRORE INATTESO, contatta l'amministratore del sistema";
die;
}
//gestisce gli errori delle query. vedi setAttribute più sopra
function handle_sql_errors($sql, $e){
error_log("SQL cmd : $sql", 0);
error_log("error code : ". $e->getCode(), 0);
error_log("error info : ". $e->getMessage(), 0);
print "ERRORE INATTESO, contatta l'amministratore del sistema";
die;
}
if (isset($_REQUEST['_SESSION'])) die("Get lost Muppet!");
$db=new Database();