salut,
j'ai 2 classes. la 1ere sert a créer une connection vers une DB et a passer des requetes:
une autre classe sert à construire une requete :
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 <?php class sqli { var $mysqli; function sqli(){ global $config; $this->mysqli = new mysqli($config['db_server'], $config['db_user'], $config['db_password'], $config['db_database']); } function runSQL($sql_string){ $resultQuery = $this->mysqli->query($sql_string); return $result; } function closeConnection($doCommit = true){ } } ?>
et depuis une page j'execute comme ceci :
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 <?php class request { var $fieldNames; var $fieldValues; var $table; var $DBconnection; function request($_table,$_DBconnection){ $this->table = $_table; $this->fieldNames = array(); $this->fieldValues = array(); $this->DBconnection = $_DBconnection; } function addField($fieldName,$fieldType){ array_push($this->fieldNames,$fieldName); array_push($this->fieldValues,$this->setField($fieldName,$fieldType)); } private function setField($fieldName,$fieldType){ $res = $this->DBconnection->real_escape_string(postParameter($fieldName,'')); return $res; } } ?>
donc je passe une instance de la classe sqli lors de la création de l'instance de la classe request. Et pourtant la ligne suivante foire : Call to undefined method sqli::real_escape_string()
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3 $mysqli = new sqli(); $request = new request('Primers',$mysqli);
Et si au lieu de passer un objet mysqli à la classe request et d'essayer de m'en servir, j'en recrée un directement dans la classe request, là ca fonctionne :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2 $res = $this->DBconnection->real_escape_string(postParameter($fieldName,''));
Vous savez ce qui peut bloquer?
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4 global $config; $tmp = new mysqli($config['db_server'], $config['db_user'], $config['db_password'], $config['db_database']); $res = $tmp->real_escape_string(postParameter($fieldName,''));
Merci d'avance
Partager