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 SQL Discussion :

Construire une requête SQL


Sujet :

Langage SQL

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éclairé
    Homme Profil pro
    Étudiant
    Inscrit en
    Décembre 2015
    Messages
    262
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Enseignement

    Informations forums :
    Inscription : Décembre 2015
    Messages : 262
    Par défaut Construire une requête SQL
    Bonjour,

    J'ai une demande un peu particulière et je ne sais pas comment m'y prendre pour construire une requête SQL qui a une "séquence fixe" et une "séquence dynamique".

    je m'explique :

    1. je peux recevoir un nombre variable de champs issus d'un $_POST selon le scénario.

    Je peux faire :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    foreach($_POST as $fields){
     echo (', ' .$fields. ' as ' .strtoupper($fields));
    }
     
    AFFICHERA PAR EXEMPLE : , code as CODE, ville as VILLE, pays as PAYS.....

    2. j'ai une requête SQL (avec des champs fixes) dans laquelle j'aimerai RAJOUTER DYNAMIQUEMENT les "fields as FIELDS". Est-ce possible et si oui pouvez vous m'aider ?
    je ne sais pas si l'approche est bonne

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    $sql = ("SELECT nom as NOM, prenom as PRENOM  + INSERTION DE MES CHAMPS ISSUS DU $_POST FROM Contacts");
    3. Si $_POST vide alors on exécute simplement la requête

  2. #2
    Expert confirmé
    Avatar de StringBuilder
    Homme Profil pro
    Chef de projets
    Inscrit en
    Février 2010
    Messages
    4 197
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 46
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Chef de projets
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Février 2010
    Messages : 4 197
    Billets dans le blog
    1
    Par défaut
    Euh…

    Oui, et la difficulté est à quel endroit ?

    Côté SQL, il n'y a rien de particulier : on ne peut pas rendre dynamique la liste des colonnes retournées par un SELECT avec des instructions SQL.

    En revanche, il suffit simplement, en PHP, de concaténer la partie fixe et la partie dynamique… Et simplement exécuter la requête SQL ainsi obtenue…

    Code php : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    $sql = 'SELECT nom as NOM, prenom as PRENOM';
    foreach($_POST as $fields) {
       $sql .= ', ' . $fields. ' as ' . strtoupper($fields);
    }
    $sql .= ' FROM Contacts';

    Puis il suffit simplement d'exécuter la requête $sql...

  3. #3
    Membre éclairé
    Homme Profil pro
    Étudiant
    Inscrit en
    Décembre 2015
    Messages
    262
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Enseignement

    Informations forums :
    Inscription : Décembre 2015
    Messages : 262
    Par défaut
    EUHH BEN OUI

    Ça ne m'est même pas venu à l'esprit...merci

    Bonnes fêtes à vous

  4. #4
    Modérateur
    Avatar de Obsidian
    Homme Profil pro
    Chercheur d'emploi
    Inscrit en
    Septembre 2007
    Messages
    7 499
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 49
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Chercheur d'emploi
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2007
    Messages : 7 499
    Par défaut
    Bonjour,

    ATTENTION AUX SQL INJECTIONS quand on procède de cette façon.

    Ici, en plus, tes arguments sont directement tirés de $_POST. Donc, non seulement on peut les remplir complètement arbitrairement et très facilement (même pas besoin de script ou d'appel à curl/wget, une simple page HTML écrite avec un éditeur de texte style bloc-note suffit) mais on n'est pas non plus obligé de passer forcément par l'interface web que tu auras mise en place et qui sera censée déclencher ta requête, interface qui pourrait éventuellement faire des contrôles sur les formats des informations saisies.

    Essaie de voir si l'API du SGBD que tu utilises propose la possibilité d'écrire des requêtes paramétrés. Curieusement, tous ne le font pas, et il est parfois assez difficile de trouver un substitut convenable.

    Si tu travailles avec PostGreSQL (depuis 7.4, en 2003, il y a quinze ans tout de même) et PHP, tu peux recourir à pg-query-params() pour ce faire. Tu peux alors écrire :

    Code PHP : Sélectionner tout - Visualiser dans une fenêtre à part
        pg_query_params("SELECT * FROM personnes WHERE nom = $1 AND prenom = $2", array($_POST("nom"),$_POST("prenom")));

    Tu peux même forcer le transtypage explicite de tes paramètres : " WHERE nom $1::varchar ".

    Ceci te permet de garantir la cohérence et l'intégrité de ce que tu transmets au serveur, les irrégularités ne concernant alors que la valeur des données elles-mêmes, irrégularités qui peuvent alors être prises en charge avec les contraintes d'intégrité de la base.

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Construire une requête SQL à partir d'un fichier properties
    Par GabriHell dans le forum Entrée/Sortie
    Réponses: 2
    Dernier message: 07/04/2010, 13h15
  2. Réponses: 1
    Dernier message: 07/12/2009, 09h25
  3. Aide pour construire une requête SQL
    Par squalito dans le forum Oracle
    Réponses: 1
    Dernier message: 09/03/2007, 15h04
  4. Aide pour construire une requête SQL
    Par squalito dans le forum Langage SQL
    Réponses: 3
    Dernier message: 09/03/2007, 14h08

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