Come sfruttare pienamente le potenzialità del nuovo layer MySQL ( più rapido - più sicuro )

Un article de Wiki Maximus CMS.



Il nuovo layer SQL di Maximus 2008 è molto semplice da comprendere, rapido da utilizzare e tutto questo con una dote di sicurezza mai raggiunta.


Sulle versioni precedenti di Maximus, per sicurezza, bisognava cancellare le risorse dopo averle utilizzate, invece con Maximus 2008 questo passaggio viene realizzato automaticamente; oltre a ciò, una semplice richiesta poteva richiedere allo sviluppatore da 2 a 5 linee di codice, ora ne sarà sufficiente una sola :)


Ecco qualche esempio che vi permette di cominciare a sviluppare correttamente e facilmente le vostre specifiche richieste al database.


Sommaire

Fare un UPDATE di una tabella SQL

  • esempio: simulare la disinstallazione di un modulo
$GLOBALS['db']->query("UPDATE `".TABLE_MODULES."` SET `active`='0',
`install`='0' WHERE `title`='AvantGo' ");


Fare un DELETE di una tabella SQL

  • esempio, eliminare tutto il contenuto della tabella sessions
$GLOBALS['db']->query("DELETE FROM `".TABLE_SESSION."` ");


  • esempio, eliminare solo le sessioni dei visitatori
$GLOBALS['db']->query("DELETE FROM `".TABLE_SESSION."` WHERE `guest`='1' ");


Estrarre dei dati sotto forma di oggetti di una tabella con un ID

  • esempio: estrarre l'indirizzo email dell'utente ID 1, genereremo un oggetto che chiameremo users, per facilitare la lettura nel resto del codice
$users = $GLOBALS['db']->get_object("SELECT `user_email` FROM `".TABLE_USERS."` WHERE `id`='1' ");
$users->user_email = secure( $users->user_email, 'strip', 'clean');
echo 'email: '. $users->user_email ;


Estrarre dei dati sotto forma di elenco array di una tabella con un ID

  • esempio: estrarre l'indirizzo email dell'utente ID 1, qui andremo a generare un array che chiameremo users, più facile a ricordare con script molto lunghi
$users = $GLOBALS['db']->get_row("SELECT `user_email` FROM `".TABLE_USERS."` WHERE `id`='1' ");
$users['user_email'] = secure( $users['user_email'], 'strip', 'clean');
echo 'email: '. $users['user_email'] ;


Estrarre un elenco oggetto di una tabella con una limitazione

  • esempio: visualizzare le categorie delle FAQ sotto forma di oggetto
 // si richiede un elenco OBJECT
 $sql = $GLOBALS['db']->get_list_object("SELECT `id_cat`, `categories` FROM
 `".TABLE_FAQCATEGORIES."` WHERE `flanguage`='$currentlang'");
 // si predispone la visualizzazione
 echo '<div id="faq_home_categorie_detail"><ul class="circle">';
 // si apre il loop sull'elenco object
 foreach ( $sql as $row ) {
         // si mettono in sicurezza le sue variabili
         $row->id_cat     = secure( $row->id_cat, 'num');
         $row->categories = secure( $row->categories, 'strip', 'clean');
         // si visualizza il risultato
         echo "<li><a href=\"".MAXURL."".MODULE_NAME."&op=detailsfaq&id_cat=".$row->id_cat."\">
 ".$row->categories."</a></li>";
 // si chiude il loop
 }
 // si chiudono i tag ''div'' e ''ul'' di presentazione
 echo '</ul></div>';


Estrarre un elenco array di una tabella con una limitazione

  • esempio: visualizzare le categorie delle FAQ sotto forma di elenco array
 // si richiede un alenco ARRAY
 $sql = $GLOBALS['db']->get_list_row("SELECT `id_cat`, `categories` FROM
 `".TABLE_FAQCATEGORIES."` WHERE `flanguage`='$currentlang'");
 // si predispone la visualizzazione
 echo '<div id="faq_home_categorie_detail"><ul class="circle">';
 // si apre il loop sull'elenco array
 foreach ( $sql as $row ) {
         // si mettono in sicurezza le sue variabili
         $row['id_cat']     = secure( $row['id_cat'], 'num');
         $row['categories'] = secure( $row['categories'], 'strip', 'clean');
         // si visualizza il risultato
         echo "<li><a href=\"".MAXURL."".MODULE_NAME."&op=detailsfaq&id_cat=".$row['id_cat']."\">
 ".$row['categories']."</a></li>";
 // si chiude il loop
 }
 // si chiudono i tag ''div'' e ''ul'' di presentazione
 echo '</ul></div>';


Contare il numero delle linee di una tabella SQL

  • esempio: come visualizzare il numero dei moduli esistenti nel database
$num = $GLOBALS['db']->get_num("SELECT `mid` FROM `".TABLE_MODULES."` ");
echo $num .' modules';


  • altro esempio: conteggiare solo i moduli installati
$num = $GLOBALS['db']->get_num("SELECT `mid` FROM `".TABLE_MODULES."` WHERE `install`='1' ");
echo $num .' modules';


Piermin 28 set 2008 h 18:20 (rif.: Cyril)