Bonjour suite au tutoriel L'objet PDO en PHP j'ai désider de maître a jour le code du site que je suis en-train de créer.
Voici l'erreur :
Fatal error: Call to a member function query() on a non-object in F:\Sites\SggCms\Config\funtion.php on line 34
Call Stack
1 0.0006 269296 {main}( ) ..\index.php:0
2 0.0024 338400 SggCms->SggCms( ) ..\index.php:5
Voici le code :
class SggCms {
/**
* variable de connection.
*
* @var string
*/
public $cpconnect;
/**
* variable du cms.
*
* @var string
*/
public $sggcms;
function connect($id) {
global $cpconnect;
try {
$DB = new PDO("mysql:host={$cpconnect$id]'host']};dbname={$cpconnect$id]'database']}", "{$cpconnect$id]'user']}", "{$cpconnect$id]'password']}");
$DB->exec("SET CHARACTER SET {$cpconnect$id]'encoding']}");
$DB->setAttribute(PDO::ATTR_ERRMODE,PDO::ERRMODE_EXCEPTION);
} catch (PDOException $e) {
echo "The database is not available, please try again later. <br/> Error code: " . $e->getMessage() . "<br>"
. "La base de donnéer n'est pas disponible, Merci de rééssayer plus tard.<br/>Code erreur: " . $e->getMessage() . "<br>"
. "La base de datos no está disponible, por favor inténtelo de nuevo más tarde. <br/> Código de error: " . $e->getMessage();
}
/*$database = mysql_connect($cpconnect$id]'host'], $cpconnect$id]'user'], $cpconnect$id]'password']) or die ("<div style=\"text-align: center;\">Error ! Database connexion failed<br />Check your user's name/password</div>");
$connect = mysql_select_db($cpconnect$id]'database'], $database) or die ("<div style=\"text-align: center;\">Error ! Database connexion failed<br />Check your database's name</div>");*/
}
function SggCms() {
global $cpconnect;
$this->connect(1);
try {
$sql_conf = $DB->query("SELECT name, value FROM config");
while ($data_conf = $sql_conf->fetch(PDO::FETCH_OBJ)) {
$this->SggCms$data_conf->name] = htmlentities($data_conf->value, ENT_NOQUOTES);
unset($sql_conf, $data_conf);
}
} catch (PDOException $e) {
echo "La request a planter<br>Code erreur: " . $e->getMessage();
}
/*$sql_conf = mysql_query("SELECT name, value FROM config");
while ($data_conf = mysql_fetch_array($sql_conf)) $this->SggCms$data_conf'name']] = htmlentities($data_conf'value'], ENT_NOQUOTES);
unset($sql_conf, $data_conf);*/
}
function UserId($User, $Mail) {
$IdUser = sha1(md5("{$User}|{$Mail}"));
return $IdUser;
}
}
Tu as utilisé la variable $DB dans la méthode SggCms sans définir sa valeur. donc lui il ne trouve pas la fonction query().
ce que je propose, Si tu as bien connecté a ta base de donnée de faire un return de $DB.
et dans ta fonction SggCms tu crées une variable $DB
$DB = $this->connect(1); // a la place de $this->connect(1);
Bonjour vous m'avais mis sur la vois merci a vous.
Voici l'erreur :
while ($data_conf = $sql_conf->fetch(PDO::FETCH_OBJ)) {
$this->SggCms$data_conf->name] = htmlentities($data_conf->value, ENT_NOQUOTES);
unset($sql_conf, $data_conf);
}
et la correction :
while ($data_conf = $sql_conf->fetch(PDO::FETCH_OBJ)) {
$this->SggCms$data_conf->name] = htmlentities($data_conf->value, ENT_NOQUOTES);
}
unset($sql_conf, $data_conf);
ou encore :
while ($data_conf = $sql_conf->fetch(PDO::FETCH_OBJ)) $this->SggCms$data_conf->name] = htmlentities($data_conf->value, ENT_NOQUOTES);
unset($sql_conf, $data_conf);
Bonjour j'ai remplacer le
$this->connect(1);
par
$DB = $this->connect(1);
Puis mise un
return $DB;
dans la function connect du coup il ma donner set erreur :
SCREAM: Error suppression ignored for
( ! ) Fatal error: Call to a member function fetch() on a non-object in F:\Sites\SggCms\Config\funtion.php on line 41
Call Stack
1 0.0004 269296 {main}( ) ..\index.php:0
2 0.0015 338184 SggCms->SggCms( ) ..\index.php:5
mais actuellement a la line 41 il y a :
while ($data_conf = $sql_conf->fetch(PDO::FETCH_OBJ)) {
La je voix pas d'ou peux venir l'errer.
Si il vous faux le code complet dit le
Salut je viens de googler un peu et sur la doc Php de PDO :
PDO::query() retourne un objet PDOStatement , ou FALSE en cas d'erreur ... et FALSE n'est pas un objet !
Tu dois probablement avoir une erreur dans la syntaxe de ta requète SQL .
Essaye un var_dump pour voir.
A+
Oliv