Passer un objet PDO via une variable de session
Bonjour à tous
J’ai créer une classe qui donne une instance de connexion à une base de donnée, et je veux pouvoir utiliser cet objet quand je veux dans mes pages php donc je la fait par une variable de session. Mais ca me met une erreur que je narrive pas à debugger.
Voici la classe ou je dfini ma classe de connection : connection.class.php
Code:
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
|
class Connection{
public static $con;
public $serveur;
public $port;
public $user;
public $password;
public $database;
public function __construct($serveur, $port, $user, $password, $database){
$this->serveur=$serveur;
$this->database=$database;
$this->port=$port;
$this->user=$user;
$this->password=$password;
}
public function connectBdd(){
if(!isset(self::$con))
{
try{
self::$con= new PDO('mysql:host='.$this->serveur.';port='.$this->port.';dbname='.$this->database, $this->user, $this->password);
print "Connexion à la base de données ruessie";
}catch(PDOException $e){
print "Error.... Num : ".$e->getCode()." Message : ".$e->getMessage();
die();
}
}
else print "une instance de cnx existe déja<br>";
return self::$con;
}
/**
*Methode défimit pour sauver les attributs avant la sérialisation
*/
public function _sleep(){
$this->con= null;
//return array('serveur', 'port', 'user', 'password', 'database');
}
/**
*Methode qui est appelée après la désérialisation, pour nous permettre de relncer la connexion
*/
public function _wakeup(){
$this->connectBdd();
}
} |
Et la mon fichier ou je stocke linstance de cnx dans une variable de session : test.php
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21
|
<?php
include "connection.class.php";
session_start();
if (!isset ($_SESSION['connexion']))
{
$connexion = new Connection ('localhost', '8888','root', 'root', 'desimmob');
$_SESSION["connexion"] = $connexion->connectBdd();
print 'Actualisez la page !';
}
else
{
echo '<pre>';
var_dump ($_SESSION['connexion']); // On affiche les infos concernant notre objet
echo '</pre>';
}
?> |
Et c avec le bout de code suivant que je teste pour voir si ca passe : rep.php
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13
|
session_start();
include "connection.class.php";
$connexion = $_SESSION["connexion"];
$query1=("Select * from test");
$resultat = $connexion->query($query1);
while($ligne = $resultat->fetch(PDO::FETCH_OBJ)){
echo $ligne->nom."-______-".$ligne->prenom."<br/>";
} |
Quand je lance test.php sur le navigateur j’obtient cette erreur
Code:
1 2
|
Fatal error: Exception thrown without a stack frame in Unknown on line 0 |
Et qund je lance rep.php sur le navigateur g cette erreur :
Code:
1 2 3 4
|
Notice: Undefined index: connexion in /Applications/MAMP/htdocs/desimmob/classe_metier/rep.php on line 5
Fatal error: Call to a member function query() on a non-object in /Applications/MAMP/htdocs/desimmob/classe_metier/rep.php on line 10 |
Si kelkun à une idée ou une solution sur mon probleme, je suis preneur.
Merci à tous