-
~Andrey™.
User deleted
Per un lavoro che devo svolgere si è reso necessario utilizzare un database, e io ho scelto MySQL. Così ho buttato giù queste poche righe che permettono di facilitare la gestione del DB. Le posto di seguito, magari potranno essere utili a qualcuno.
Si tratta di due semplici classi, MySQL e Conf:CODICE<?php
include 'inc/config.php';
class MySQL {
private $host;
private $user;
private $pass;
private $db;
private $conn = NULL;
private $dbresult = NULL;
private $result;
public $rows = array(array());
public function __construct($host = Conf::host, $user = Conf::user, $pass = Conf::pass) {
$this->host = $host;
$this->user = $user;
$this->pass = $pass;
}
public function Connect() {
$this->conn = mysql_connect($this->host, $this->user, $this->pass);
if (!$this->conn)
die("\n" . 'Errore durante la connessione a MySQL. Verificare che i parametri siano corretti e che il servizio MySQL sia attivo.');
return $this->conn;
}
public function SelectDB($db = Conf::db) {
if ($this->Control()) {
if (!($this->dbresult = mysql_select_db($db, $this->conn)))
die("\n" . 'Errore nella selezione del database. Controllare il file di configurazione, e verificare che il Database esista.');
return $this->dbresult;
} else
die("\n" . 'Connessione a MySQL non attiva');
}
private function Control() {
if (!$this->conn)
die("\n" . 'Nessuna connessione attiva!');
return TRUE;
}
public function Query($query) {
if ($this->Control())
return mysql_query($query);
}
public function Select($query) {
$i = 0;
if (!$this->dbresult)
die("\n" . 'Nessun Database selezionato');
$this->result = $this->Query($query);
if (!$this->result)
return $i;
while ($this->rows[$i] = mysql_fetch_array($this->result))
$i++;
return $i;
}
public function Close() {
if ($this->Control())
return mysql_close($this->conn);
}
public function StrClean($str) {
return (mysql_real_escape_string($str, $this->conn));
}
}
?>
inc/config.php:CODICE<?php
class Conf {
const host = "localhost";
const user = "root";
const pass = "lulz";
const db = "loldb";
}
?>
Per la classe Conf non credo servano spiegazioni, per quanto riguarda la classe MySQL ecco una piccola reference:
Metodi:
Costruttore: accetta tre parametri opzionali. Nel caso manchino, utilizza i valori della Classe Conf.
Connect(): Si connette al server MySQL.
SelectDB(): Seleziona il database passato come argomento. Vale lo stesso discorso dei parametri del Costruttore.
Control(): Controlla che la connessione sia attiva.
Query(): Esegue una query SQL.
Select(): Esegue una Select SQL. A differenza del precedente, riempie la matrice rows con le righe risultanti, e restituisce il numero di righe ottenute.
Close(): Chiude la connessione con il Server MySQL.
StrClean(): Aggiunge gli escape ai caratteri speciali (Come ').
Proprietà:
rows: contiene le righe ricevute dal database in seguito ad una SELECT.
Esempio: un database contiene la seguente tabella Utenti:ID Nome Cognome 0 Mario Rossi 1 Luigi Bianchi 2 Pinco Pallino 3 Mario Verdi CODICE<?php
include 'db.php';
$SQL = new MySQL();
$SQL->Connect();
$SQL->SelectDB();
$query = 'SELECT * FROM Utenti WHERE Nome = \'Mario\'';
if ($SQL->Select($query)) {
echo $SQL->rows[0][1]; // Stampa 'Mario'
echo $SQL->rows[1]['Cognome']; // Stampa 'Verdi'
}
?>
Enjoy
Edited by ~Andrey™ - 10/7/2010, 17:40. -
.
Bene! Mi sembra utile! . -
~Andrey™.
User deleted
Corretta una piccola imprecisione: la funzione Control ora non verifica più se è stato selezionato un database, dato che ci sono istruzioni che non necessitano di un database in particolare, come ad esempio quella che crea il database stesso.
Questo controllo rimane comunque necessario per il metodo Select(), e l'ho quindi aggiunto a parte.. -
Skillman_92.
User deleted
okkk grazie andrey
forse ho capito anche l'ultima parte. tutto chiaro anche per :: o ->CODICEif ($SQL->Select($query)) {
echo $SQL->rows[0][1]; // Stampa 'Mario'
echo $SQL->rows[1]['Cognome']; // Stampa 'Verdi'
}.