Location: PHPKode > scripts > SODA > soda/exemples/02_utilisation_avancees.php
<?php
require_once("../base.inc.php");
echo "<p><h1>Exemples d'utilisations Avancées de la Classe SODA:</h1></p>";
echo "<p><h2>Exemple 1 :</h2></p>";
//création de l'objet:
/*
  exemple 1: reprend l'exemple 1 du fichier 01_utilisation_simple.php le résultat sera le même mais on utilise une requête préparée.
*/
/*
on ne spécifie pas le dernier argument ($len de l'exemple1) car il vaut par défaut 0.
*/

$bd = SODA::create('root', 'mot_de_passe', 'moteur', 'localhost','mysql');
//On prépare la requête qui sélectionne les 5 premières lignes de la table 'DNSEARCH' où type=3
$bd->prepare('SELECT * FROM `DNSEARCH` WHERE `type`=3 LIMIT 0, 5 ' , 'select_ten','assoc');
//on exécute la requête précedemment préparée:
$data=$bd->select_ten->exec();
//méthode alternative:
//$data=$bd->exec('select_ten');
var_dump($data);
//on affiche l'objet 'request' pour voir ce qu'il y a dedans
var_dump($bd->select_ten);
//puis on efface la requete :
$bd->clean('select_ten');

/*
  Résultats: voir l'exemple 1 du fichier 01_utilisation_simple.php
*/

echo "<p><h2>Exemple 2 :</h2></p>";
/*
  exemple 2: idem exemple 1 avec des variables dans la requete sql
  Un des avantages des requêtes préparées est de pouvoir insérer des variables dans la requête sql.
  il y a deux types de variables celles qui sont identifiées par un masque de la forme {masque} et celles identifiées par le masque ?
  * si l'on souhaite nommer ses variables, on utilise un masque de la forme {nom_de_variable} . 
    pour définir la valeur de cette variable, il suffit dans le script courant de définir avant d'exécuter la requête :
     - soit $nom_de_variable='valeur'; avec 'valeur' = chaine de caractère
     - soit $objet_soda->requete_prepare->vars['nom_de_variable']='valeur'; 
       ou $objet_soda->requete_prepare['nom_de_variable']='valeur';
       ou $objet_soda->requete_prepare->nom_de_variable='valeur';
       ou $objet_soda->requete_prepare->nom_de_variable='valeur;
   * si l'on souhaite des index numériques autoincrémentés, on utilise le masque ? (exemple 2 bis)
     pour définir la valeur des variables, il suffit dans le script courant de définir avant d'exécuter la requête:
       - $objet_soda->requete_prepare->vars[0]='valeur'; //pour l'index 0
         ou $objet_soda->requete_prepare[0]='valeur';
!!!!!! ATTENTION !!!!!!
N'utilisez pas les variables portant les noms ci-dessous:
  _sql, _data, _type, _ltype, _result, _lengths, _fields, _rows, _vars, _parent, _errors
!!!!!! ATTENTION !!!!!!
*/
//pour l'exemple on créait à nouveau un objet SODA mais à cause de la méthode singleton (une seule instance autorisée) 
//$bd sera égal à celui défini dans l'exemple 1: 
$bd = SODA::create('root', 'mot_de_passe', 'moteur', 'localhost','mysql');
$bd->prepare('SELECT * FROM `DNSEARCH` WHERE `type`={tpe} LIMIT 0, 5 ' , 'select_ten','assoc');
//ci dessous ne fonctionne pas la variable $type est déjà définie dans la requête elle vaut 'assoc'
//$bd->prepare('SELECT * FROM `DNSEARCH` WHERE `type`={type} LIMIT 0, 5 ' , 'select_ten','assoc');
// mysql retourne l'erreur  'Unknown column 'assoc' in 'where clause'' car 
// la requête sql vaut 'SELECT * FROM `DNSEARCH` WHERE `type`=assoc LIMIT 0, 5 '

//on définit la valeur du type:
$tpe='2';
//on exécute la requête précedemment préparée:
$data=$bd->select_ten->exec();
//méthode alternative:
//$data=$bd->exec('select_ten');
var_dump($data);
//on affiche l'objet 'request' pour voir ce qu'il y a dedans
var_dump($bd->select_ten);
//on affiche les variables trouvées dans le code sql:
var_dump($bd->select_ten->_vars);
//on efface pas la requete pour l'exemple 2 bis;
/*
  Résultats: voir l'exemple 1 du fichier 01_utilisation_simple.php pour le début
  puis les variables sont ci dessous: (var_dump($bd->select_ten->vars))
  
object(Array_Object)[1]
  public 'tpe' => string '3' (length=1)

*/

echo "<p><h2>Exemple 2 (bis):</h2></p>";
/*
  exemple 2 bis: idem exemple 2 avec le masque ? et deux variables: 
*/
//on réutilise la requete préparée de l'exemple 2 mais on redéfinit la valeur de la requête avec deux variables: 
$bd->select_ten->_sql='SELECT * FROM `DNSEARCH` WHERE `type`=? LIMIT 0, ? ';
//on définit la valeur du type (premier '?'):
$bd->select_ten[0]='3';
//on définit le nombre d'enregistrements à afficher (deuxième '?'):
$bd->select_ten[1]='5';
//on exécute la requête précedemment préparée:
$data=$bd->select_ten->exec();
//méthode alternative:
//$data=$bd->exec('select_ten');
var_dump($data);
//on affiche l'objet 'request' pour voir ce qu'il y a dedans
var_dump($bd->select_ten);
//on affiche les variables trouvées dans le code sql:
var_dump($bd->select_ten->_vars);
//puis on efface la requete :
$bd->clean('select_ten');
/*
  Résultats: voir l'exemple 1 du fichier 01_utilisation_simple.php pour le début
  puis les variables sont ci dessous: (tpe est encore défini car on a pas supprimé l'objet)

object(Array_Object)[1]
  public 'tpe' => string '3' (length=1)
  string '3' (length=1)
  string '5' (length=1)

*/


/*
  exemple 3: on veut poser plusieurs requêtes en même temps: 
*/
echo "<p><h2>Exemple 3 :</h2></p>";
$bd = SODA::create('root', 'mot_de_passe', 'moteur', 'localhost','mysql');
//la premiere requete 
//On sélectionne les 5 premières lignes de la table 'DNSEARCH' où type=3
$req1=array('SELECT * FROM `DNSEARCH` WHERE `type`=3 LIMIT 0, 5 ' , 'select_ten1','assoc',0);
//la deuxième requete 
//On sélectionne les lignes 5 à 10 de la table 'DNSEARCH' où type=3
$req2=array('SELECT * FROM `DNSEARCH` WHERE `type`=3 LIMIT 5, 5 ' , 'select_ten2','assoc',0);
//on prépare la requête:
$retour_prepare=$bd->prepare(array($req1,$req2));
//on les exécute:
$retour_exec=$bd->exec(array('select_ten1','select_ten2'));
//si on ne passe pas d'arguments à $bd->exec() toutes les requêtes préparées sont exécutées 
var_dump($retour_prepare,$retour_exec);
//on affiche les données des requêtes
var_dump($bd->select_ten1->_data,$bd->select_ten2->_data);
//puis on efface les requetes si l'on veut libérer de la mémoire:
$bd->clean(array('select_ten1','select_ten2'));
//on peut utiliser $bd->clean() sans arguments pour effacer toutes les requêtes de l'objet
//une autre possibilité est de faire :
//$bd->select_ten1->clean();
//et  $bd->select_ten2->clean();

/* Résultats:
//prepare retourne un tableau avec les noms ou les index des requetes créées:
array
  0 => string 'select_ten1' (length=11)
  1 => string 'select_ten2' (length=11)
//exec retourne true en cas de succès false en cas d'échec
boolean true

//les données de la requête select_ten1
object(Array_Object)[5]
  
    array
      'long_ip' => string '214549523' (length=9)
      'host' => string 'threezprinting.com' (length=18)
      'type' => string '3' (length=1)
  
    array
      'long_ip' => string '418549946' (length=9)
      'host' => string 'mermony.com' (length=11)
      'type' => string '3' (length=1)
  
    array
      'long_ip' => string '211550389' (length=9)
      'host' => string 'allianceabroad.net' (length=18)
      'type' => string '3' (length=1)
  
    array
      'long_ip' => string '417550322' (length=9)
      'host' => string 'nxane.com' (length=9)
      'type' => string '3' (length=1)
  
    array
      'long_ip' => string '203550569' (length=9)
      'host' => string 'molecular.com' (length=13)
      'type' => string '3' (length=1)

//les données de la requête select_ten2
object(Array_Object)[17]
  
    array
      'long_ip' => string '212550757' (length=9)
      'host' => string 'telacore.com' (length=12)
      'type' => string '3' (length=1)
  
    array
      'long_ip' => string '418550458' (length=9)
      'host' => string 'balawfirm.com' (length=13)
      'type' => string '3' (length=1)
  
    array
      'long_ip' => string '212550766' (length=9)
      'host' => string 'nwcsb.com' (length=9)
      'type' => string '3' (length=1)
  
    array
      'long_ip' => string '212550777' (length=9)
      'host' => string 'lsplc.com' (length=9)
      'type' => string '3' (length=1)
  
    array
      'long_ip' => string '212550778' (length=9)
      'host' => string 'medicbizservices.com' (length=20)
      'type' => string '3' (length=1)

*/



















?>
Return current item: SODA