Line 15... |
Line 15... |
15 |
* @author Aurélien PERONNET <aurelien@tela-botanica.org>
|
15 |
* @author Aurélien PERONNET <aurelien@tela-botanica.org>
|
16 |
* @author Jean-Pascal MILCENT <jpm@tela-botanica.org>
|
16 |
* @author Jean-Pascal MILCENT <jpm@tela-botanica.org>
|
17 |
* @copyright Copyright (c) 2010, Tela Botanica (accueil@tela-botanica.org)
|
17 |
* @copyright Copyright (c) 2010, Tela Botanica (accueil@tela-botanica.org)
|
18 |
* @license http://www.cecill.info/licences/Licence_CeCILL_V2-fr.txt Licence CECILL
|
18 |
* @license http://www.cecill.info/licences/Licence_CeCILL_V2-fr.txt Licence CECILL
|
19 |
* @license http://www.gnu.org/licenses/gpl.html Licence GNU-GPL
|
19 |
* @license http://www.gnu.org/licenses/gpl.html Licence GNU-GPL
|
20 |
* @version $Id: Bdd.php 424 2013-04-15 09:45:53Z aurelien $
|
20 |
* @version $Id: Bdd.php 435 2013-09-04 14:29:43Z jpm $
|
21 |
* @link /doc/framework/
|
21 |
* @link /doc/framework/
|
22 |
*/
|
22 |
*/
|
23 |
class Bdd {
|
23 |
class Bdd {
|
24 |
/** Constante stockant le squelette du message en cas d'erreur de requête sql. */
|
24 |
/** Constante stockant le squelette du message en cas d'erreur de requête sql. */
|
25 |
const ERREUR_REQUETE_TPL = 'Requête echec.\nFichier : %s.\nLigne : %s.\nMessage : %s.\nRequête : %s';
|
25 |
const ERREUR_REQUETE_TPL = 'Requête echec.\nFichier : %s.\nLigne : %s.\nMessage : %s.\nRequête : %s';
|
Line 107... |
Line 107... |
107 |
/** Initialise les constantes de classe à leur bonne valeur et déclenche une erreur si le protocole n'est pas bien défini. */
|
107 |
/** Initialise les constantes de classe à leur bonne valeur et déclenche une erreur si le protocole n'est pas bien défini. */
|
108 |
protected function initialiserProtocole() {
|
108 |
protected function initialiserProtocole() {
|
109 |
switch ($this->abstraction) {
|
109 |
switch ($this->abstraction) {
|
110 |
case self::ABSTRACTION_PDO :
|
110 |
case self::ABSTRACTION_PDO :
|
111 |
$this->ASSOC = PDO::FETCH_ASSOC;
|
111 |
$this->ASSOC = PDO::FETCH_ASSOC;
|
112 |
$this->OBJECT = PDO::FETCH_CLASS;
|
112 |
$this->OBJECT = PDO::FETCH_OBJ;
|
113 |
break;
|
113 |
break;
|
114 |
case self::ABSTRACTION_MYSQL :
|
114 |
case self::ABSTRACTION_MYSQL :
|
115 |
$this->ASSOC = 'mysql_fetch_assoc';
|
115 |
$this->ASSOC = 'mysql_fetch_assoc';
|
116 |
$this->OBJECT = 'mysql_fetch_object';
|
116 |
$this->OBJECT = 'mysql_fetch_object';
|
117 |
break;
|
117 |
break;
|
Line 131... |
Line 131... |
131 |
|
131 |
|
132 |
/**
|
132 |
/**
|
133 |
* Connection à la base de données en utilisant les informations fournies par
|
133 |
* Connection à la base de données en utilisant les informations fournies par
|
134 |
* le fichier de configuration.
|
134 |
* le fichier de configuration.
|
- |
|
135 |
* Cette méthode est private et final car elle n'a pas vocation a être appelée par l'utilisateur.
|
- |
|
136 |
* TODO : il est peut être nécessaire pour MYSQL, MYSQLi et SQLITE3 afin d'éviter les boucles infinis
|
135 |
* Cette méthode est private et final car elle n'a pas vocation a être appelée par l'utilisateur.
|
137 |
* d'erreur quand la bdd n'est pas configuré d'utiliser : $this->connexion->query (comme pour PDO)
|
136 |
*/
|
138 |
*/
|
137 |
protected function connecter() {
|
139 |
protected function connecter() {
|
138 |
if ($this->connexion == null) {
|
140 |
if ($this->connexion == null) {
|
139 |
switch ($this->abstraction) {
|
141 |
switch ($this->abstraction) {
|
Line 144... |
Line 146... |
144 |
} catch (PDOException $e) {
|
146 |
} catch (PDOException $e) {
|
145 |
$e = sprintf(self::ERREUR_CONNEXION_TPL, $e->getMessage());
|
147 |
$e = sprintf(self::ERREUR_CONNEXION_TPL, $e->getMessage());
|
146 |
trigger_error($e, E_USER_WARNING);
|
148 |
trigger_error($e, E_USER_WARNING);
|
147 |
}
|
149 |
}
|
148 |
if ($this->encodage != null && $this->type == 'mysql') {
|
150 |
if ($this->encodage != null && $this->type == 'mysql') {
|
149 |
$this->requeter("SET names '".$this->encodage."'");
|
151 |
$this->connexion->query("SET names '".$this->encodage."'");
|
150 |
} else if ($this->type == 'sqlite') {
|
152 |
} else if ($this->type == 'sqlite') {
|
151 |
$this->requeter("PRAGMA case_sensitive_like = false");
|
153 |
$this->connexion->query("PRAGMA case_sensitive_like = false");
|
152 |
}
|
154 |
}
|
153 |
break;
|
155 |
break;
|
154 |
case self::ABSTRACTION_MYSQL :
|
156 |
case self::ABSTRACTION_MYSQL :
|
155 |
$this->connexion = mysql_connect($this->hote, $this->utilisateur, $this->pass);
|
157 |
$this->connexion = mysql_connect($this->hote, $this->utilisateur, $this->pass);
|
156 |
if ($this->connexion !== false) {
|
158 |
if ($this->connexion !== false) {
|
Line 392... |
Line 394... |
392 |
$retour = $this->connexion->escapeString($chaine);
|
394 |
$retour = $this->connexion->escapeString($chaine);
|
393 |
break;
|
395 |
break;
|
394 |
}
|
396 |
}
|
395 |
return $retour;
|
397 |
return $retour;
|
396 |
}
|
398 |
}
|
397 |
|
399 |
|
398 |
/**
|
400 |
/**
|
399 |
* Protège les chaines d'un tableau de caractères avant l'insertion dans la base de données (ajout de quotes ou guillemets).
|
401 |
* Protège les chaines d'un tableau de caractères avant l'insertion dans la base de données (ajout de quotes ou guillemets).
|
400 |
* @param array le tableau de chaines à protéger
|
402 |
* @param array le tableau de chaines à protéger
|
401 |
* @return array le tableau avec les chaines protégées
|
403 |
* @return array le tableau avec les chaines protégées
|
402 |
*/
|
404 |
*/
|