- Home
- Categorie
- Coding e Sistemistica
- PHP
- costante nome del database e classi
-
costante nome del database e classi
Ciao a tutti,
premetto che non sono molto esperto di progammazione a oggetti, sto tentando di creare una piccola classe personalizzata per poter eseguire connessioni al database e query senza ogni volta dover scrivere codice e ho fatto cosi:ho creato il file config in cui ho messo le costanti che uso cioe:
<? define(HOSTNAME,'localhost'); define(USER,'root'); define(PASS,'miapass'); define(DBNAME.'database'); define(URL,'http://localhost:8888/'); define(ROOT_PATH,'antonio'); define(URL_PATH,URL.ROOT_PATH); ?>
poi il file class.php :
<? /*classe per la connessione e query a un database */ class connessione { //Costruttore della classe function connessione() { $this->dbhost = HOSTNAME; $this->dbuser = USER; $this->dbpass = PASS; $this->dbname = "miodb"; $this->results = mysql_query($this->query); $this->row; } // creo la funzione per connettermi al server e seleziono il database function connetti() { $this->conn = mysql_pconnect($this->host,$this->dbuser,$this->dbpass) or die("Errore nella connessione"); $this->db = mysql_select_db($this->dbname,$this->conn) or die("Errore nella selezione del database"); } // eseguo la query e creo l'array che contiene risultati function arrayquery($query) { $this->results = mysql_query($this->query) or die("Errore di connessione".mysql_error()); $this->row = mysql_fetch_array($this->results); } // chiudo la connessione al database function closedb() { $this->connect(); mysql_close($this->conn); } } ?>
messo cosi mi funziona perfettamente, il problema pero e che la variabile con il nome del database devo impostarla nel file class, se per esempio modifico la riga :
$this->dbname = "miodb";
con
$this->dbname = DBNAME;Ricevo errore nella selezione del database, in pratica non posso usare una costante per il nome del database, e normale oppure sono io che sbaglio?
Un altra curiosita avendo usando il metodo mysql_pconnect , devo anceh chiudere la connessione oppure non cene bisogno?
Naturalmente suggerimenti su come modificare la classe e migliorarla sono ben accetti, grazie.
-
Ti sei dimenticato di racchiudere tra apici gli identificatori delle costanti nelle define. Fai così
define('HOSTNAME','localhost');
e lo stesso per le altre.
Ti consiglio di mettere il livello di segnalazione degli errori al massimo quando testi uno script, così ricevi dei Notice per queste cose.