Bonjour, je sollicite votre aide pour une requête avec PDO et MySql en php.
Pour l'installation de mon CMS, je demande de rentrer les informations suivante
host, username, password, database) pour ainsi vérifier si la connexion et ok et si la base de donnée existe :
Jusque là tout va bien, la requête me renvoie bien une valeur dans $result, si la connexion est OK et que la base de donnée existe alors j'exécute une requête pour créer mes tables, sinon je créer ma base de donnée avec la requête suivante :
Et là c'est le drame voici le message d'erreur que j'obtient et je ne sais pas du tout pourquoi et comment le résoudre :
Je tient à préciser que la ligne 323 contient le code suivant:
Voici la class de Connection PDO complète :
Pour l'installation de mon CMS, je demande de rentrer les informations suivante

if (!empty($host) && !empty($username) && !empty($database)) {
$db = new Connection($host, $database, $username, $password);
$result = $db->check_database_config();
}
else {
$result = DB_UNKNOW_ERROR;
}
Jusque là tout va bien, la requête me renvoie bien une valeur dans $result, si la connexion est OK et que la base de donnée existe alors j'exécute une requête pour créer mes tables, sinon je créer ma base de donnée avec la requête suivante :
try {
$db->executeQuery('CREATE DATABASE IF NOT EXISTS '.$database.';');
$result = DB_CONFIG_SUCCESS;
}
catch (Exception $e) {
print_r($e);
}
Et là c'est le drame voici le message d'erreur que j'obtient et je ne sais pas du tout pourquoi et comment le résoudre :
Fatal error: Call to a member function executeQuery() on a non-object in Y:\WebMastering\Ressources\CMS\Royal-Tracker\1.0_final_files\install\install.php on line 323
Je tient à préciser que la ligne 323 contient le code suivant:
$db->executeQuery('CREATE DATABASE IF NOT EXISTS '.$database.';');
Voici la class de Connection PDO complète :
class Connection extends AbsConnection {
// private variables -----------------------------------------------------+
private $connection;
private $user;
private $pass;
private $dsn;
private $host;
private $database;
// function __construct --------------------------------------------------+
public function __construct($host, $database, $username, $password) {
$this->dsn = "mysql:host=$host;dbname=$database";
$this->user = $username;
$this->pass = $password;
}
// function setConnection ------------------------------------------------+
public function setConnection($db) {
$this->connection = $db;
}
// function getConnection ------------------------------------------------+
public function getConnection() {
return $this->connection;
}
// function check_database_config ----------------------------------------+
public function check_database_config() {
try {
$pdoConnect = new PDO($this->dsn, $this->user, $this->pass);
$this->connection = $pdoConnect;
return DB_CONFIG_SUCCESS;
}
catch(PDOException $e) {
if(strstr($e->getMessage(), 'SQLSTATE[')) {
preg_match('/SQLSTATE\[(\w+)\] \[(\w+)\] (.*)/', $e->getMessage(), $matches);
if ($matches[1] == 42000 & $matches[2] == 1049) {
return DB_CONFIG_ERROR_DATABASE_NOT_FOUND;
}
if ($matches[1] == 28000 & $matches[2] == 1045) {
return DB_CONFIG_ERROR_CONNECTION_TO_DBMS;
}
}
}
}
// function connect ------------------------------------------------------+
public function connect() {
try {
$pdoConnect = new PDO($this->dsn, $this->user, $this->pass);
$this->connection = $pdoConnect;
} catch (PDOException $e) {
die("Error connecting database: Connection::connect(): ".$e->getMessage());
}
}
// function executeDML ---------------------------------------------------+
public function executeDML($query) {
if (!$this->getConnection()->query($query)) {
throw new ErrorConnection($this->getConnection()->errorInfo());
} else {
return true;
}
}
// function executeQuery -------------------------------------------------+
public function executeQuery($query) {
$rs = null;
if ($stmt = $this->getConnection()->prepare($query)) {
if ($this->executePreparedStatement($stmt, $rs)) {
return $rs;
}
} else {
throw new ErrorConnection($this->getConnection()->errorInfo());
}
}
// function executePreparedStatement -------------------------------------+
private function executePreparedStatement($stmt, & $row = null) {
$boReturn = false;
if ($stmt->execute()) {
if ($row = $stmt->fetchAll()) {
$boReturn = true;
} else {
$boReturn = false;
}
} else {
$boReturn = false;
}
return $boReturn;
}
// function beginTransaction ---------------------------------------------+
public function beginTransaction() {
if (!$this->getConnection()->beginTransaction()) {
throw new ErrorConnection($this->getConnection()->errorInfo());
}
}
// function commit -------------------------------------------------------+
public function commit() {
if (!$this->getConnection()->commit()) {
throw new ErrorConnection($this->getConnection()->errorInfo());
}
}
// function rollback -----------------------------------------------------+
public function rollback() {
if (!$this->getConnection()->rollback()) {
throw new ErrorConnection($this->getConnection()->errorInfo());
}
}
}