Bonjour,
J'utilise mysqli_real_escape_string($mysqli,$string);.
J'ai une 1ere connection à la bdd $mysqli, et pour utiliser mysqli_real_escape_string($mysqli,$string); je dois refaire une connection à la bdd $mysqli2 . Ce qui fait 2 connections alors que 1 seule devrait suffire.
Pour le moment je ne vois pas d'autre solution. ça fait doublon.
J'utilise mysqli car j'ai déjà du code avec mysql. Donc je veux pas utiliser pour le moment PDO.
db.php
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3 $mysqli2 = new mysqli(HOST, USER, PASS, BASE); $string = mysqli_real_escape_string($mysqli2,$string);
Common.class.php
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2 $mysqli = new mysqli(HOST, USER, PASS, BASE);
User.class.php
Code : 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 <?php include("db.php"); class Common{ function __construct($mysqli){ $this->mysqli = $mysqli; //now you can use the object as $this->mysqli throughout your class } // Données entrantes public static function bdd($string) { $errorMethode="bdd()"; try{ // On regarde si le type de string est un nombre entier (int) if(ctype_digit($string)) { $string = intval($string); } // Pour tous les autres types else { $mysqli2 = new mysqli(HOST, USER, PASS, BASE); $string = mysqli_real_escape_string($mysqli2,$string); // Échappement des caractères % et _ $string = addcslashes($string, '%_'); } return $string; }//fin try{ catch(Exception $e){ echo"<br><center><font color=red>Exception : ". $e->getMessage()." Error in : ".$errorMethode."<br><br>string= ".$string."<br><br></font></center><br>"; }//fin catch(Exception $e){ } } ?>
page.php
Code : 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 <?php include("Common.class.php"); class User{ function __construct($mysqli){ $this->mysqli = $mysqli; //now you can use the object as $this->mysqli throughout your class } public function faire($param){ $param =Common::bdd($param); $q = "UPDATE table SET name = '".$param."' "; $result = $this->mysqli->query($q) or die("Error SQL in : ".$errorMethode."<br><br>".$q."<br><br>MSG : " .$this->mysqli->error); if (!$result) throw new Exception ("Pb dexecution de $q. ". $this->mysqli->error); else return $result; } } ?>
En modifiant Common.class.php avec bdd($mysqli,$string) et $string = mysqli_real_escape_string($mysqli,$string); utilise 1 seule connection.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7 //include("Common.class.php"); include("User.class.php"); $monUser = new User($mysqli); $monUser->faire("Paul");
Problème c'est que sur toutes les méthodes il faut rajouter le paramètre $mysqli car bdd($mysqli,$string) est utilisé dans presque toutes les fonctions.
User.class.php devient
Code : 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 <?php include("db.php"); class Common{ function __construct($mysqli){ $this->mysqli = $mysqli; //now you can use the object as $this->mysqli throughout your class } // Données entrantes public static function bdd($mysqli,$string) { ... //$mysqli2 = new mysqli(HOST, USER, PASS, BASE); $string = mysqli_real_escape_string($mysqli,$string); // Échappement des caractères % et _ $string = addcslashes($string, '%_'); ... return $string; .. } } ?>
page.php devient
Code : 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 <?php include("Common.class.php"); class User{ function __construct($mysqli){ $this->mysqli = $mysqli; //now you can use the object as $this->mysqli throughout your class } public function faire($mysqli,$param){ $param =Common::bdd($mysqli,$param); ... return $result; } } ?>
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7 //include("Common.class.php"); include("User.class.php"); $monUser = new User($mysqli); $monUser->faire($mysqli,"Paul");
Partager