Function php() - un petit coup de pouce

  • Auteur de la discussion Auteur de la discussion ZelkiN
  • Date de début Date de début
WRInaute occasionnel
Bonjour à vous WRInautes ;)

Je suis entrain de faire une fonction PHP appelé last_transaction($usersid,$number) mais je rencontre un problème tout simple... mais que je n'arrive cependant pas à régler.

En effet je fais une requête select dans cette fonction, jusqu'à la rien de bien méchant, le truc c'est que ca me met une erreur, la variable $bdd (permettant la connexion a la base de donnée) est introuvable. Elle est pourtant bien défini précedemment...

FONCTION COMPLETE
function last_transaction($usersid,$number) {
require_once('../bdd/bdd.php');
$query_transac = "SELECT usersID, title, montant, date FROM users_transaction WHERE usersID='$usersid'";
$rs_transac = mysql_query($query_transac, $bdd) or die(mysql_error());
$transac = mysql_fetch_assoc($rs_transac);
echo $transac['title'];
}

Est ce que quelqu'un aurait une idée sur ce probleme ? Sachant que si je ne fais appel a ma bdd il n'y a pas de souci, Merci
 
WRInaute passionné
Code:
function last_transaction($usersid,$number) {
	global $bdd;
	require_once('../bdd/bdd.php');
	$query_transac = "SELECT users
	....
 
WRInaute occasionnel
Ok merci ca marche nikel, en revanche j'ai entendu dire que les superglobales favorisaient les failles de sécurité ?! Ca craint quelque chose la dedans ?
 
WRInaute impliqué
On préfère effectivement éviter le plus possible l'utilisation des variables globales.
Le problème de ces dernières, c'est que tu n'es jamais sur du contenu. En théorie, elle contient ta connexion à la BDD, mais en pratique, elle peut être modifiée à tout moment, pour une raison ou une autre.

Une solution est de mettre ta ressource dans une fonction.
Voici un exemple :
Code:
# dans ton fichier bdd.php

function getConnection() {
    static $bdd = null;
    
    if ($bdd !== null) {
        return $bdd;
    }
    
    // ton autre code pour initialiser la connexion
}

// ensuite, dans ta fonction last_transaction :
function last_transaction($usersid,$number) {
    $bdd = getConnection();
}

De cette manière, tu es certain du contenu de $bdd (qui est locale dans les fonctions).

Il existe bien entendu plusieurs façon de procéder.
 
WRInaute occasionnel
J'ai l'impression qu'il y a une erreur Blount, en effet quand j'applique ta méthode la var $bdd n'est pas trouvé ce qui met en erreur la requete SQL (code ci joint)

mysql_query(): supplied argument is not a valid MySQL-Link resource in c:\*******\function.php on line 18
 
Discussions similaires
Haut