Salve,
ho cercato di creare una classe per la connessione al database, non capisco perché non funziona inoltre non mi ritorna nessun errore. Dove sbaglio? I dati inseriti che fornisco per la connessioni sono corretti, perché ho provato a far mysql_connect(dati) e funziona
Vi riporto qui sotto la classe, magari una volta risolto il problema potrà tornare utile a qualche altra persona.
Codice PHP:
<?php
/**
* Connessione al database
*/
class Connection {
private $s_conn;
public function Connection() {
global $DB;
$this->s_conn = $this->mysql($DB['host'], $DB['user'], $DB['pass'], $DB['name']);
return $this->s_conn;
}
/**
* Funzione per la connessione al database
*/
public function mysql($host, $user, $pass, $dbname) {
// Connessione
$conn = @mysql_connect($host, $user, $pass);
// Scelta del database
$select_db = @mysql_select_db($dbname, $conn);
// Verifico eventuali errori di connessione
if($conn == FALSE || $select_db == FALSE){
$conn = $this->error();
}
// Codifica dei caratteri
$this->query("SET NAMES 'utf8'");
return $conn;
}
/**
* Funzioni per l'interazione con il database
*/
public function query() {
// Controllo i dati forniti
$query = $this->mysql_escape_query(func_get_args());
// Ritorno la query eseguita
return mysql_query($query);
}
public function fetch_array($result) {
// Ritorno i dati risultati da una query in un array associativo, numerico o entrambi
return mysql_fetch_array($result);
}
public function fetch_assoc($result) {
// Ritorno i dati risultati da una query in un array associativo
return mysql_fetch_assoc($result);
}
public function fetch_object($result) {
// Ritorno i dati risultati da una query sotto forma di oggetto
return mysql_fetch_object($result);
}
public function num_rows($result) {
// Ritorno il numero di righe generati da una query
return mysql_num_rows($result);
}
public function insert_id() {
// Ritorno l'ultimo id inserito
return mysql_insert_id();
}
public function error() {
// Ritorno il messaggio d'errore
return mysql_error();
}
public function close() {
mysql_close($this->s_conn);
}
public function mysql_escape_query($argv) {
// Eseguo un controllo sui dati, per filtrare e prevenire tentativi di SQL injection
$argc = count($argv);
$q = '';
for ($i = 0; $i < $argc; $i++) {
if ($i&1) {
if (is_array($argv[$i])) {
$aux = "";
foreach($argv[$i] as $x)
$aux .= "'".mysql_escape_string(trim($x))."',";
$q .= trim($aux,",");
} else {
$q .= "'".mysql_escape_string(trim($argv[$i]))."' ";
}
} else {
$q .= $argv[$i];
}
}
return $q;
}
public function super_escape_string($in_str) {
// Altra funziuone di controllo sui dati
$conn = new Connection;
$in_str = trim($in_str);
$in_str = stripslashes($in_str);
$character = get_html_translation_table(HTML_ENTITIES, ENT_QUOTES);
$in_str = strtr($in_str, $character);
$in_str = mysql_real_escape_string($in_str);
$conn->close();
return $in_str;
}
}
?>
Per richiamarla faccio semplicemente
Codice PHP:
$conn = new Connection;
$conn->query("query da eseguire");
Grazie in anticipo a tutti coloro che mi aiuteranno a risolvere il problema.