Bonsoir à tous,

J'ai écrit une classe mysql pour se connecter à une table (base Mysql) et retourner une liste de pages. Je précise que je débute en POO.
Voici l'erreur que je rencontre :

Fatal error: Call to a member function prepare() on a non-object in C:\wamp\www\test\pdo\class_mysql.php on line 55
Merci pour votre aide

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
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
 
<?php
require_once 'config.php'; // constantes
require_once 'class_mysql.php';
 
$db = new Mysql();
$listesPages = $db->returnListe(
	array(
		"table" => pages,
		"id,titre"
	)
);
 
 
 
class Mysql {
 
	protected $connect;
	protected $host;
	protected $db;
	protected $login;
	protected $password;
 
	public function __construct(){
		$this->setHost(DB_HOST);
		$this->setDb(DB);
		$this->setLogin(DB_LOGIN);
		$this->setPassword(DB_PASSWORD);
	}
 
 
	/*
	 * fonction qui se connecte à un serveur et une db Mysql
	 * @host : serveur
	 * @login : login de connexion
	 * @password : mot de passe de connexion
	 * $db : nom de la base
	 */
	protected function connectDb(){ 
		try {
			$db = new PDO('mysql:host='.$this->host.';dbname='.$this->db.'', ''.$this->login.'', ''.$this->password.'');
			$db->setAttribute(PDO::ATTR_CASE, PDO::CASE_LOWER); // les noms de champs seront en caractères minuscules
			$db->setAttribute(PDO::ATTR_ERRMODE , PDO::ERRMODE_EXCEPTION); // les erreurs lanceront des exceptions
			$this->connect = $db;
		}
		catch (PDOException $e){
			echo "Connection à la base de donnée impossible" . 
			"<br/>" . $e->getMessage().
			"<br/> LINE : " . $e->getLine();
		}
	}
 
 
	/*
	 * Fonction qui sélectionne une liste
	 * @arrayReq : tableau pour construire une requête
	 * @arrayReq['table'] = table à sélectionnée
	 * @arrayReq['fiels'] = champs à sélectionner, tous les champs si vide
	 * @arrayReq['condition'] = condition après le where sans le WHERE
	 */
	public function returnListe($arrayReq){
 
		$conx = $this->connectDb();
		$table = $arrayReq['table'];
		$fields = (!isset($arrayReq['fiels'])) ? '*' : $arrayReq['fiels'];
		$condition = (!isset($arrayReq['condition'])) ? '' : 'WHERE' . $arrayReq['condition'];
 
		$select = $conx->prepare('SELECT '.$fields.' FROM '.$table.''.$condition.'');
		$select->execute();
		$return = $select->fetchAll();
		return $return;
	}
 
	// Sets
	protected function setHost($host){
		$this->host = $host;
	}
	protected function setLogin($login){
		$this->login = $login;
	}
	protected function setPassword($password){
		$this->password = $password;
	}
	protected function setDb($db){
		$this->db = $bd;
	}
 
	// gets
	public function getConnect(){
		return $this->connect;	
	}
 
}