Bonjour,
Voila je rencontre un petit problème avec mon code.
En appelant ma fonction qui dans celle-ci à une requête préparé, mais malheureusement il y a une erreur quand justement j'essaye d'appelé celle-ci.
Il m'indiquent comme quoi $bdd(ma bdd pdo) est null donc n'existe pas alors que tout est bon au niveau des require
Donc, pour commencer on arrive sur index.php dessus on require le fichier common.php et qui lui charge les différents fichiers comme functions.php puis common_db.php(qui permet la connexion à la bdd)
Décrivez ici votre code ou ce que vous cherchez à faire
common.php APPEL > functions.php et common_db.php
// Load the functions script
require PUN_ROOT.'include/functions.php';
// Load DB abstraction layer and connect
require PUN_ROOT.'include/dblayer/common_db.php';
$pun_user = array();
check_cookie($pun_user); // je fait appel à ma fonction
functions.php
function check_cookie(&$pun_user)
{
// Check if there's a user with the user ID and password hash from the cookie
if(isset($_SESSION['id'], $_SESSION['username']) && !empty($_SESSION['id']) && !empty($_SESSION['username'])){
#ligne du problème // connecté
$result = $bdd->prepare("SELECT s.* FROM `s_accounts` s WHERE s.Username=:username AND s.id=:id");
$result->execute(array('username' => htmlspecialchars($_SESSION['username']), 'id' => intval($_SESSION['username'])));
$pun_user = $result->fetch();
$pun_user['is_guest'] = false; // il est connecté
}
else // il n'est pas connecté
} set_default_user(); ->> fonction avec la même requête préparé qu'en haut et même erreur
common_db.php
try {
$bdd = new PDO('mysql:host=127.0.0.1;dbname=project;charset=utf8', 'root', ''); //LOCAL
} catch(Exception $e)
{
die(''.$e->getMessage());
}
Je cherche juste à faire en sorte de corriger l'erreur à propos de la base de donnée
Fatal error: Uncaught Error: Call to a member function prepare() on null in C:\xamp\htdocs\include\functions.php:107(= ligne de ma requête prepare) Stack trace: #0 C:\xamp\htdocs\include\common.php(45): check_cookie(Array) #1 C:\xamp\htdocs\config.php(10): require('C:\\xamp\\htdocs\\...') #2 C:\xamp\htdocs\index.php(1): require_once('C:\\xamp\\htdocs\\...') #3 {main} thrown in C:\xamp\htdocs\include\functions.php on line 107
J'ai déjà regardé si ma requête prepare en était la cause mais non j'ai directement fait la requête dans le fichier ou je charge ma bdd et ça fonctionne parfaitement, donc je pense que c'est un problème de require qui charge pas bien la bdd, ou le fichier functions doit être chargé avant un certain fichiers etc.. bref, je ne vois pas du tout d'où cela pourrais venir
merci d'avance pour votre aide
Bonjour,
Salut,
Déjà merci pour ta réponse,
parfait donc tu as ce que tu veux ?
Autre chose, si tu fais un isset + !empty alors tu peux supprimer le isset car il est inclus dans la fonction empty
Et mettre un alias "s" à ta table perso je trouve cela unutile et ajoute des caractères pour rien. C'est surtout utile lors des jointures ou quand tu as plusieurs tables
Oui, j'ai eu ce que je voulais.
Effectivement, le !empty + isset est pareil en faisant simplement un !empty, merci de la petite astuce ;)
Par rapport au "s" dans ma requête, c'est normal je le sais bien car plus tard j'en aurai besoin je prévois le coup
Merci pour toutes tes réponses