Bonjour

je souhaite faire une fonction qui me retourne des infos enregistré en base de données mais je me retrouve avec l'erreur suivante:
Notice: Undefined variable: user in G:\Fred\Programmes_files\wamp64\www\social\test.php on line 35
Notice: Trying to get property of non-object in G:\Fred\Programmes_files\wamp64\www\social\test.php on line 35
Notice: Undefined variable: user in G:\Fred\Programmes_files\wamp64\www\social\test.php on line 36
Notice: Trying to get property of non-object in G:\Fred\Programmes_files\wamp64\www\social\test.php on line 36

voici ma fonction ainsi que son utilisation:

if (!function_exists('select')) {
    function select($field, $value, $table, $select) {
        $db = dbConnect();
        $q = $db->prepare("SELECT $select from $table WHERE $field = ?");
        $q->execute([$value]);
        $q->closeCursor();
        $user = $q->fetch(PDO::FETCH_OBJ);

        return $user;

    }
}

// Ici On cherche le pseudo et le genre de l'utilisateur ayant l'id 6 dans la table users
select('genre', '6', 'users', 'genre, pseudo');
echo $user->genre;
echo $user->pseudo;

1 réponse


Bonjour,
je pense que tu t'es embrouille dans les parametres que tu utilises dans ta fonction select(). Tu as mis 'genre' a la place de 'id' je pense.
Ici tu lances la requetes :
SELECT genre, pseudo FROM users WHERE genre = 6

Aussi ton closeCursor est mal place car ici tu liberes la connexion sans recuperer tes resultats.
Un conseil, debug ton code. Ex ceci t'aurais montre avec comme retour un bool(false) que ta fonction retourne aucun resultat (car tu liberes la connexion avec de recuperer les donnees) - ca t'aurai mis sur la piste :) :

var_dump(select('id', '6', 'users', 'genre, pseudo'));

Aussi, tu affectes le retour de ta fonction a aucune variable. Donc tes echo vont rien retourner.
Tu dois faire qqchose comme :

$resultat =  select('id', '6', 'users', 'genre, pseudo');
echo $resultat->genre;
echo $resultat->pseudo;

Donc au final ca donnerai =>

if (!function_exists('select')) {
    function select($field, $value, $table, $select) {
        $db = dbConnect();
        $q = $db->prepare("SELECT $select from $table WHERE $field = ?");
        $q->execute([$value]);
        $user = $q->fetch(PDO::FETCH_OBJ);
        $q->closeCursor();

        return $user;
    }
}

$resultat = select('id', '6', 'users', 'genre, pseudo');
echo $resultat->genre;
echo $resultat->pseudo;