Bonjour

Je lit de plus en plus que des fonctions MySQL vont être supprimé !
J'aimerai me tourné donc vers PDO et modifier une classe :
Voici les fichiers :
database.php :
Code php : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
 
abstract class Database
{
    /*****************************************
     * Paramètres du serveur
     ****************************************/
    protected $hote = 'localhost';
    protected $user = 'root';
    protected $pass = '';
 
    /*****************************************
     * Paramètres de la base de données
     ****************************************/
    public $base = '';
    public $pref = '';
 
 
    /*****************************************
     * État de la connexion
     ****************************************/
    public $connected = false;
    protected $link = 0;
 
    /*****************************************
     * Nombre de requêtes exécutées et temps
     ****************************************/
    public $nbr_requetes = 0;
    public $tps_requetes = 0;
 
 
    /*****************************************
     * Database->__construct ( void )
     *
     * Constructeur de la classe.
     * Modifie les données de la classe
     ****************************************/
 
    public function __construct ()
    {
        if ( is_file ( 'systeme/configuration.' . EXT ) )
        {
            // Ce fichier contient les informations sur les base de données
            include_once ( 'systeme/configuration.' . EXT );
 
            // On modifie les données de la classe
            if ( isset ( $bdd_hote ) ) $this->hote = $bdd_hote;
            if ( isset ( $bdd_user ) ) $this->user = $bdd_user;
            if ( isset ( $bdd_pass ) ) $this->pass = $bdd_pass;
            if ( isset ( $bdd_port ) ) $this->port = $bdd_port;
            if ( isset ( $bdd_base ) ) $this->base = $bdd_base;
            if ( isset ( $bdd_pref ) ) $this->pref = $bdd_pref;
        }
        else if ( is_file ( 'systeme/configuration-tmp.' . EXT ) )
        {
            // Ce fichier contient les informations sur les base de données
            include_once ( 'systeme/configuration-tmp.' . EXT );
 
            // On modifie les données de la classe
            if ( isset ( $bdd_hote ) ) $this->hote = $bdd_hote;
            if ( isset ( $bdd_user ) ) $this->user = $bdd_user;
            if ( isset ( $bdd_pass ) ) $this->pass = $bdd_pass;
            if ( isset ( $bdd_port ) ) $this->port = $bdd_port;
            if ( isset ( $bdd_base ) ) $this->base = $bdd_base;
            if ( isset ( $bdd_pref ) ) $this->pref = $bdd_pref;
        }
        else
        {
            trigger_error ( 'Le fichier de configuration de la base de données est introuvable.' , E_USER_NOTICE );
        }
    }
 
 
    /*****************************************
     * void Database->SetParametres ( string $Hote , string $User , string $Pass , string $Base = '' , string $Pref = '' )
     *
     * Modifie les données de la classe
     *
     *  $Hote : serveur
     *  $User : utilisateur
     *  $Pass : mot de passe
     *  $Base : base de données
     *  $Pref : préfixes des tables
     ****************************************/
 
    public function SetParametres ( $Hote , $User , $Pass , $Base = '' , $Pref = '' )
    {
        $this->hote = $Hote;
        $this->user = $User;
        $this->pass = $Pass;
        if ( !empty ( $Base ) ) $this->base = $Base;
        if ( !empty ( $Pref ) ) $this->pref = $Pref;
    }
 
 
    /*****************************************
     * Méthodes à définir dans les classes dérivées
     ****************************************/
 
    abstract public function Connect ();
    abstract public function Disconnect ();
    abstract public function Erreur ( $ligne , $fichier , $requete );
    abstract public function Requete ( $requete );
    abstract public function LastInsertId ( $requete );
    abstract public function NbrRowsSelected ( $requete );
    abstract public function NbrRowsAffected ( $requete );
    abstract public function Result ( $requete , $champ , $ligne = 0 );
    abstract public function ResultArray ( $requete );
    abstract public function Protege ( $texte , $stripslashes = true );//true
    abstract public function Version ();
}
et db_MySQL :
Code php : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
 
class MySQL extends Database
{
    private $req_infos = array ();
 
 
    /*****************************************
     * MySQL->__construct ( void )
     *
     * Constructeur de la classe.
     * Modifie les paramètres et se connecte à la base de données
     ****************************************/
 
    public function __construct ()
    {
        parent::__construct ();
 
        $this->Connect ();
    }
 
 
    /*****************************************
     * MySQL->__destruct ()
     *
     * Déstructeur de la classe.
     * Se déconnecte du serveur
     ****************************************/
 
    public function __destruct ()
    {
        $this->Disconnect ();
    }
 
 
    /*****************************************
     * bool MySQL->Connect ( void )
     *
     * Connexion à la base de données
     *
     *  Retour : booléen indiquant le succès de l'opération
     ****************************************/
 
    public function Connect ()
    {
        $id = mysql_connect ( $this->hote , $this->user , $this->pass );
 
        if ( $id === false )
        {
            return false;
        }
 
        $this->link = $id;
 
        if ( !mysql_select_db ( $this->base , $this->link ) )
        {
            if ( !mysql_query ( "CREATE DATABASE `" . $this->base . "`;" , $this->link ) )
            {
                return false;
            }
        }
 
        $this->connected = true;
 
        return true;
    }
 
 
    /*****************************************
     * bool MySQL->Disconnect ( void )
     *
     * Déconnexion de la base de données
     *
     *  Retour : booléen indiquant le succès de l'opération
     ****************************************/
 
    public function Disconnect ()
    {
        if ( $this->connected )
        {
            $this->connected = false;
 
            $close = mysql_close ( $this->link );
 
            $this->link = 0;
 
            return $close;
        }
 
        return false;
    }
 
 
    /*****************************************
     * void MySQL->Erreur ( unsigned int $ligne , string $fichier , string $requete )
     *
     * Affichage d'une erreur
     *
     *  $ligne : ligne du fichier où s'effectue la requête (obtenue par __LINE__)
     *  $fichier : fichier où s'effectue la requête (obtenue par __FILE__)
     *  $requete : requête SQL exécutée
     ****************************************/
 
    public function Erreur ( $ligne , $fichier , $requete )
    {
        global $configuration;
        global $site;
        global $langue;
 
        $page_titre = 'Erreur MySQL';
        $page_simple = 1;
        $page_CSS = '';
 
 
        // On enlève les espaces en début de ligne
        $requete = preg_replace ( "#\n(\s{0,})#" , "\n" , $requete );
 
        // Pour la coloration de la requête SQL
        /*if ( function_exists ( 'geshi_highlight' ) )
        {
            $requete = geshi_highlight ( $requete , 'mysql' , null , true );
        }*/
 
        // Suppression des retours à la ligne
        #$requete = preg_replace ( "#\n#" , " " , $requete );
 
 
        // Transformation du message d'erreur
 
        $erreur = mysql_error ( $this->link );
 
        $erreur = preg_replace ( "#^Duplicate entry '(.+)' for key 1$#is" , "L'entrée <q>$1</q> existe déjà" , $erreur );
 
        $erreur = preg_replace ( "#^Access denied for user '(.+)'@'(.+)' \(using password: NO\)$#is" , "Accès refusé pour l'utilisateur $1@$2 (pas de mot de passe)" , $erreur );
 
        $erreur = preg_replace ( "#^You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near '(.+)' at line (.+)$#is" , "La syntaxe de la requête est incorrecte près de <q>$1</q>, à la ligne $2" , $erreur );
        #$erreur = preg_replace ( "#^You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near '(.+)' at line (.+)$#is" , "La syntaxe de la requête est incorrecte près de <q>$1</q>" , $erreur );
 
        //1048
        $erreur = preg_replace ( "#^Column '(.+)' cannot be null$#is" , "La colonne <q>$1</q> ne peut pas être nulle" , $erreur );
 
        //1052
        $erreur = preg_replace ( "#^Column '(.+)' in where clause is ambiguous$#is" , "La colonne <q>$1</q> dans la clause WHERE est ambigüe" , $erreur );
        $erreur = preg_replace ( "#^Column '(.+)' in field list is ambiguous$#is" , "La colonne <q>$1</q> dans la liste des champs est ambigüe" , $erreur );
 
        //1054
        $erreur = preg_replace ( "#^Unknown column '(.+)' in 'field list'$#is" , "La colonne <q>$1</q> est inconnue dans la liste des champs" , $erreur );
        $erreur = preg_replace ( "#^Unknown column '(.+)' in 'on clause'$#is" , "La colonne <q>$1</q> est inconnue dans la clause ON" , $erreur );
        $erreur = preg_replace ( "#^Unknown column '(.+)' in 'order clause'$#is" , "La colonne <q>$1</q> est inconnue dans la clause ORDER" , $erreur );
        $erreur = preg_replace ( "#^Unknown column '(.+)' in 'where clause'$#is" , "La colonne <q>$1</q> est inconnue dans la clause WHERE" , $erreur );
 
        //1062
        $erreur = preg_replace ( "#^Duplicate entry '(.+)' for key (.+)$#is" , "L'entrée <q>$1</q> existe déjà pour la clé unique <q>$2</q>" , $erreur );
 
        //1065
        $erreur = preg_replace ( "#^Query was empty$#i" , "La requête est vide" , $erreur );
 
        //1066
        $erreur = preg_replace ( "#^Not unique table/alias: '(.+)'$#is" , "Vous utilisez plusieurs fois la table <q>$1</q>" , $erreur );
 
        //1103
        $erreur = preg_replace ( "#^Incorrect table name '(.{0,})'$#is" , "Le nom de la table est incorrect : <q>$1</q>" , $erreur );
 
        //1140
        $erreur = preg_replace ( "#^Mixing of GROUP columns \(MIN\(\),MAX\(\),COUNT\(\),...\) with no GROUP columns is illegal if there is no GROUP BY clause$#is" , "Mélanger des colonnes groupées (MIN(), MAX(), COUNT()...) sans colonne GROUP n'est pas autorisé s'il y n'y a pas de clause GROUP BY" , $erreur );
 
        //1146
        $erreur = preg_replace ( "#^Table '(.+)' doesn't exist$#is" , "La table <q>$1</q> n'existe pas" , $erreur );
 
        //1227
        $erreur = preg_replace ( "#^Access denied; you need the SHOW DATABASES privilege for this operation$#is" , "Accès refusé, vous devez avoir le privilège pour voir les bases de données" , $erreur );
 
        //1242
        $erreur = preg_replace ( "#^Subquery returns more than 1 row$#is" , "La sous-requête retourne plus d'une ligne" , $erreur );
 
        //2006
        $erreur = preg_replace ( "#^MySQL server has gone away$#is" , "MySQL server has gone away" , $erreur );
 
 
        $page_texte = '<p><strong>Erreur&nbsp;:</strong> ' . $erreur . " (Erreur " . mysql_errno ( $this->link ) . ")</p>\n";
        $page_texte .= '<p><strong>Date et heure&nbsp;:</strong> ' . date ( $configuration['format_date'] ) . ' à ' . date ( $configuration['format_heure'] ) . "</p>\n";
        $page_texte .= '<p><strong>Fichier&nbsp;:</strong> ' . $fichier . " (Ligne " . $ligne . ")</p>\n";
        $page_texte .= "<p><strong>Requête SQL&nbsp;:</strong></p>\n<div id=\"query\"><code>" . $requete . "</code></div>\n\n";
 
        $page_texte .= "<p>Retour à la <a href=\"index." . EXT . "\" title=\"Retourner sur la page d'accueil\">page d'accueil</a>.</p>";
 
        include ( 'systeme/page.' . EXT );
 
        die ( -1 );
    }
 
 
    /*****************************************
     * ressource MySQL->Requete ( string $requete )
     *
     * Exécute une requête SQL
     *
     *  $requete : requête SQL à exécuter
     *
     *  Retour : résultat de la requête ou false en cas d'échec
     ****************************************/
 
    public function Requete ( $requete )
    {
        if ( !$this->connected )
        {
            return false;
        }
 
        // Temps d'exécution
        $tps_requetes = microtime ( true );
 
        $req = mysql_query ( $requete , $this->link );
 
        $tps_requetes = microtime ( true ) - $tps_requetes;
 
        $this->req_infos[] = array ( 'txt' => $requete , 'tps' => $tps_requetes );
 
        $this->tps_requetes += $tps_requetes;
        $this->nbr_requetes++;
 
        return $req;
    }
 
 
    public function Requete2 ( $requete , $ligne = 0 , $fichier = '' )
    {
        if ( !$this->connected )
        {
            return false;
        }
 
        // Temps d'exécution
        $tps_requetes = microtime ( true );
 
        $req = mysql_query ( $requete , $this->link );
 
        $tps_requetes = microtime ( true ) - $tps_requetes;
 
        $this->req_infos[] = array ( 'txt' => $requete , 'tps' => $tps_requetes );
 
        $this->tps_requetes += $tps_requetes;
        $this->nbr_requetes++;
 
        if ( $req === false )
        {
            $this->Erreur ( __LINE__ , __FILE__ , $sql );
        }
 
        return $req;
    }
 
 
    /*****************************************
     * unsigned int MySQL->LastInsertId ( ressource $requete )
     *
     * Dernier identifiant entré dans la base
     *
     *  $requete : requête concernée
     *
     *  Retour : numéro du dernier id entré dans la base
     ****************************************/
 
    public function LastInsertId ( $requete )
    {
        return mysql_insert_id ( $this->link );
    }
 
 
    /*****************************************
     * unsigned int MySQL->NbrRowsSelected ( ressource $requete )
     *
     * Compte le nombre de lignes sélectionnées par une requête Select.
     *
     *  $requete : requête à analyser
     *
     *  Retour : nombre de ligne sélectionnées
     ****************************************/
 
    public function NbrRowsSelected ( $requete )
    {
        return mysql_num_rows ( $requete );
    }
 
 
    /*****************************************
     * unsigned int MySQL->NbrRowsAffected ( ressource $requete )
     *
     * Compte le nombre de lignes affectées par une requête de type Update ou Delete.
     *
     *  $requete : requête à analyser
     *
     *  Retour : nombre de ligne affectées par une requêtes
     ****************************************/
 
    public function NbrRowsAffected ( $requete )
    {
        return mysql_affected_rows ( $this->link );
    }
 
    /*****************************************
     * array MySQL->Result ( ressource $requete , string $champ , unsigned int $ligne = 0 )
     *
     * Retourne le résultat d'une requête Select
     *
     *  $requete : requête à analyser
     *  $champ : champ à sélectionner
     *  $ligne : ligne à sélectionner
     *
     *  Retour : nombre de ligne affectées par une requêtes
     ****************************************/
 
    public function Result ( $requete , $champ , $ligne = 0 )
    {
        for ( $i = 0 ; $row = $this->ResultArray ( $requete ) ; $i++ )
        {
            if ( $ligne == $i ) return $row[$champ];
        }
    }
 
 
    /*****************************************
     * array MySQL->ResultArray ( ressource $requete )
     *
     * Retourne le résultat d'une requête Select sous forme d'un tableau
     *  pour chaque ligne de résultat.
     *
     *  $requete : requête à analyser
     *
     *  Retour : tableau contenant une ligne de la requête
     ****************************************/
 
    public function ResultArray ( $requete )
    {
        return mysql_fetch_assoc ( $requete );
    }
 
 
    /*****************************************
     * array MySQL->ResultArray2 ( ressource $requete )
     *
     * Retourne le résultat d'une requête Select sous forme d'un tableau
     *  à deux dimensions (lignes et colonnes).
     *
     *  $requete : requête à analyser
     *
     *  Retour : tableau contenant les résultats de la requête
     ****************************************/
 
    public function ResultArray2 ( $requete )
    {
        $result = array ();
 
        while ( $row = mysql_fetch_assoc ( $requete ) )
        {
            $result[] = $row;
        }
 
        return $result;
    }
 
 
    /*****************************************
     * string MySQL->Protege ( string $texte , bool $stripslashes = true )
     *
     * Protège du texte contre les injections SQL
     *
     *  $texte : texte à transformer
     *  $stripslashes : indique si on doit supprimer les slashes
     *
     *  Retour : texte transformé
     ****************************************/
 
    public function Protege ( $texte , $stripslashes = true )
    {
        if ( $stripslashes && get_magic_quotes_gpc () == 1 )
        {
            $texte = html_entity_decode ( stripslashes ( $texte ) );
        }
 
        return mysql_real_escape_string ( $texte );
    }
 
 
    /*****************************************
     * string MySQL->Version ( void )
     *
     * Donne la version de MySQL
     *
     *  Retour : version de MySQL
     ****************************************/
 
    public function Version ()
    {
        return mysql_get_server_info ();
    }
 
 
    /*****************************************
     * array MySQL->RequetesListe ( void )
     *
     * Donne la liste des requêtes exécutées et leur temps d'exécution
     *
     *  Retour : tableau
     ****************************************/
 
    public function RequeteListe ()
    {
        return $this->req_infos;
    }
}
Je suppose que cette classe va être obsolète d'ici peu de temps ?
Est-il possible de la modifier sans toucher au sources des autres pages ?
Merci pour toutes les infos qu'on pourra m'apporter.