Bonsoir,
je cherche à comprendre le fonctionnement de PDO et de sa portée.
j'ai réalisé un petit script qui fonctionne mais je cherche à comprendre certain principe qui m'échappe
Class Connexion.php
fichier : essai.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 <?php require 'Connexion_Param.php'; Class Connexion { private $_host = BD_HOST; private $_dbName = DB_NAME; private $_user = DB_USER; private $_pass = DB_PASS; private $_charset = BD_CHARSET; private $_error; private $_qerror; private $pdo; public function __construct () { try { $dsn ="mysql:host=".$this->_host.";dbname=".$this->_dbName.";charset=".$this->_charset; $this->pdo = new PDO ($dsn, $this->_user, $this->_pass); $this->pdo->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION); $this->pdo->setAttribute(PDO::ATTR_DEFAULT_FETCH_MODE, PDO::FETCH_OBJ); } catch (PDOException $e) { echo 'Erreur de connection'. $e->getMessage(); } } static function getPDO(){ // est-il possible de créer une méthode appelée à partir d'un appel Connexion::getPDO (voir fichier Essai.php) if(!self::$pdo){ self::$pdo = new Connexion(); } //echo 'connexion ok'; return self::$pdo; } /*public function getPDO (){ avec cette méthode j'arrive à créer ma connexion et réaliser mes req SQL dans le fichier Essai.php return $this->pdo; }*/ } ?>
Si j'ai bien lu PDO est créé localement dans une variable. Et je dois rendre cette variable accessible en dehors. J'ai lu qu'il fallait également éviter des variables globales...je suis un peu paumé...
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 <?php require_once 'Connexion.php'; //$bdd = (new Connexion())->getPDO(); --> avec cette méthode j'arrive à faire mes requêtes $bdd = Connexion::getPDO(); // Fatal error: Access to undeclared static property: Connexion::$pdo in C:\wamp64\www\test\LOGICIEL FINAL\CLASS\Connexion.php on line 35 -> comment la rendre accessible ? je ne comprends pas tout $sql = "SELECT * FROM ligue"; $ligues = $bdd->prepare($sql); $ligues->execute(); $result = $ligues->fetchAll(); print_r($result);
merci pour votre aide
Partager