[RESOLU] Créer une fonction avec des requête SQL à l'intérieur

Eléphant du PHP | 386 Messages

01 oct. 2013, 03:33

Bonjour,

J'ai un fichier functions.inc.php avec des requêtes à l'intérieur.
Le problème c'est que ces requêtes s’exécutent même si elles ne sont pas demandées.
J'aimerais utiliser des fonctions, mais après plusieurs tests, je n'y arrive pas :?

Cette requête par exemple :
$req = $connect->prepare('SELECT * FROM users WHERE pseudo = :pseudo');
$req->execute(array('pseudo' => $_GET['pseudo']));
$profil = $req->fetch();
$file_profil = ''.$_SERVER["DOCUMENT_ROOT"].'/users/upload/'.$profil['id'].'-mini.jpg';
$adresse_profil = $profil['sexe'] == 1 ? ''.$_SERVER["DOCUMENT_ROOT"].'/users/upload/homme.jpg' : ''.$_SERVER["DOCUMENT_ROOT"].'/user/upload/femme.jpg';
$req->closeCursor();
J'ai besoin qu'elle soit exécutée quand on va sur la page d'accueil du membre pour récupérer son prénom par exemple.

J'ai quand même essayé :
function recupInfos(){
$req = $connect->prepare('SELECT * FROM users WHERE pseudo = :pseudo');
$req->execute(array('pseudo' => $pseudo_membre));
$data = $req->fetch();
$file_membre = ''.$_SERVER["DOCUMENT_ROOT"].'/img/upload/'.$data['id'].'-mini.jpg';
$adresse_membre = $data['sexe'] == 1 ? ''.$_SERVER["DOCUMENT_ROOT"].'/img/upload/homme.jpg' : ''.$_SERVER["DOCUMENT_ROOT"].'/img/upload/femme.jpg';
$req->closeCursor();
return recupInfos();
}
J'ai cette erreur :

Fatal error: Call to a member function prepare() on a non-object in ..../functions.inc.php indiquant qu'il manque la connexion à la BDD.
Mais elle est indiquée dans la page d'accueil du membre avec : require('config.inc.php');

Si je rajoute une connexion à la BDD dans la fonction, j'ai un message d'erreur indiquant trop de connexions à la base.

Il y a peut-être un moyen, ou alors j'écris mal la fonction ?
Merci d'avance pour vos réponses

Eléphant du PHP | 116 Messages

01 oct. 2013, 08:02

Bonjour Nicolas,

Dans ta fonction tu ne définis pas $connect. Donc l'erreur, je pense, viens de là. Regarde la portabilité des variables.

Si tu re définis $connect ça plante ? Peut être que ton hébergeur ne veut pas que tu aies un nombre trop important de connexion à la même base (par exemple, tu es déjà connecté 1 fois et c'est ton maximum !).

Du coup, essaye avec :
 $_GLOBAL['connect']->prepare(...)
Tiens moi au courant,

A bientôt,
Computarelier
@+,
Computarelier