Semplice classe per la gestione MySQL

« Older   Newer »
 
  Share  
.
  1. ~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:

    IDNomeCognome
    0MarioRossi
    1LuigiBianchi
    2PincoPallino
    3MarioVerdi


    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
     
    Top
    .
  2.  
    .
    Avatar

    Senior Member

    Group
    Staff
    Posts
    10,796

    Status
    Anonymous
    Bene! :) Mi sembra utile!
     
    Top
    .
  3. ~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.
     
    Top
    .
  4. Skillman_92
     
    .

    User deleted


    okkk grazie andrey
    forse ho capito anche l'ultima parte. tutto chiaro anche per :: o ->
    CODICE
    if ($SQL->Select($query)) {
          echo $SQL->rows[0][1]; // Stampa 'Mario'
          echo $SQL->rows[1]['Cognome']; // Stampa 'Verdi'
    }
     
    Top
    .
3 replies since 18/6/2010, 15:38   367 views
  Share  
.