IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Langage PHP Discussion :

Appeler des requêtes SQL en leur passant des paramètres [Fait]


Sujet :

Langage PHP

  1. #1
    Membre actif Avatar de grinder59
    Inscrit en
    Septembre 2005
    Messages
    707
    Détails du profil
    Informations forums :
    Inscription : Septembre 2005
    Messages : 707
    Points : 215
    Points
    215
    Par défaut Appeler des requêtes SQL en leur passant des paramètres
    Bonjour,

    afin de développer une application propre, organisée et facilement maintenable, j'ai pour but de l'organiser en fichier :
    - fichier des requêtes SQL : requetes.php
    - fichier des fonctions : fonctions.php
    - fichier de paramètres : parametres.php
    - fichier d'affichage de la page : index.php
    etc etc

    Le petit souci que je rencontre concerne le fichier des requêtes. Dans ce fichier, je stocke les requêtes de cette façon :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    $requete1 = "SELECT * FROM myTable1 WHERE myDate = $X";
    $requete2 = "SELECT * FROM myTable2 WHERE monParam = $Y";
    ...
    Mon souci est de donner une valeur à $X et $Y mais de façon propre.
    Dans mon fichier de fonctions, je pourrai faire :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    //initialisation de $X
    $X = '2008-10-10';
    // appel de la requête
    mysql_query($requete1);
    et encore, je ne sais pas si $X sera interprété et de toutes faons, je ne trouve pas cela propre...

    Comment pourrai-je faire ?
    Existe-t-il une solution du type :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    // dans requête.php :
    $requete1 = "SELECT * FROM myTable WHERE myDate = :1";
    // dans fonctions.php
    mysql_query($requete1, '2008-10-10');
    Cela me permettrait également de pouvoir passer plusieurs paramètres à une seule requêtes sans faire de bricolage pas propre...

    Merci de votre aide !!!

  2. #2
    Membre émérite

    Homme Profil pro
    Expert PHP
    Inscrit en
    Novembre 2004
    Messages
    2 127
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Expert PHP
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Novembre 2004
    Messages : 2 127
    Points : 2 557
    Points
    2 557
    Par défaut
    Tu peux te faire ta fonction : mon_mysql_query();
    qui prend des paramètres et lance un mysql_query.

  3. #3
    Membre éclairé
    Avatar de djayp
    Profil pro
    Inscrit en
    Avril 2004
    Messages
    295
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2004
    Messages : 295
    Points : 687
    Points
    687
    Par défaut
    Salut,

    Perso je me suis fait une petite fonction qui récupère tous mes paramètres dans un tableau et qui les remplace dans mes requêtes. Un petit exemple vaut mieux qu'un long discours :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
     
     // fonction qui remplace les codes {text} par les valeurs correpsondantes de $var['text'] 
    function sql_replace($sql,$var) {  
      return preg_replace('/\{(\w+)\}/e','\$var[\'\\1\']',$sql); 
    } 
     
    $var['nom']='Durant'; 
    $var['age']='21'; 
    $var['order']='nom ASC';  
     
    $req ="SELECT * FROM personne WHERE nom='{nom}' AND age > {age} ORDER BY {order}";
     
    mysql_query(sql_replace($req,$var));
    Voilà !
    A++

  4. #4
    Membre émérite Avatar de darkstar123456
    Homme Profil pro
    Développeur Web
    Inscrit en
    Mars 2008
    Messages
    1 896
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : Belgique

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Mars 2008
    Messages : 1 896
    Points : 2 835
    Points
    2 835
    Par défaut
    Un des meilleurs trucs que je connaisse

    => http://www.phpinsider.com/php/code/SafeSQL/

    format des requêtes :

    Code php : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
     
    $some_ids = array(12, 95, 1891, 98791, 510);
     
    $sql = "SELECT * FROM maTable WHERE id IN (%q) AND name LIKE '%s' AND active = '%i'";
    $sqlData = array($some_ids, "%recherche%", 1);
    $this->sql->query($sql, $sqlData);
     
    // OU ENCORE
    $some_ids = array(12, 95, 1891, 98791, 510);
     
    $this->sql->query("SELECT * FROM maTable WHERE id IN (%q) AND name LIKE '%s' AND active = '%i'", array($some_ids, "%recherche%", 1));
     
    // OU ENCORE
    $some_ids = array(12, 95, 1891, 98791, 510);
     
    $sql = "SELECT * FROM maTable WHERE id IN (%q) AND name LIKE '%s' AND active = '%i'";
    $this->sql->query($sql, array($some_ids, "%recherche%", 1));
     
     
    // OU ENCORE
    $sql = "SELECT * FROM maTable";
    $this->sql->query($sql);

    Bref, pas mal de possibilité

Discussions similaires

  1. [SQL] Gérer les erreurs des requêtes SQL
    Par eagleleader dans le forum Langage SQL
    Réponses: 2
    Dernier message: 12/10/2007, 13h28
  2. Evaluer des requêtes SQL avant leurs execution ?
    Par BkD35 dans le forum Requêtes
    Réponses: 2
    Dernier message: 09/04/2007, 20h20
  3. [MFC] comment écrire des requêtes SQL
    Par kitsune dans le forum MFC
    Réponses: 9
    Dernier message: 27/09/2005, 15h23
  4. Journal des requêtes SQL effectuées
    Par Kcirtap dans le forum Décisions SGBD
    Réponses: 2
    Dernier message: 18/07/2005, 09h58
  5. Recherche ibrairie pour éxécuter des requêtes SQL via C++
    Par daemon dans le forum Choisir un environnement de développement
    Réponses: 5
    Dernier message: 14/06/2004, 10h28

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo