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

PHP & Base de données Discussion :

Optimiser une requête préparée [PDO]


Sujet :

PHP & Base de données

  1. #1
    Nouveau membre du Club
    Homme Profil pro
    retraité
    Inscrit en
    Décembre 2012
    Messages
    55
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Vendée (Pays de la Loire)

    Informations professionnelles :
    Activité : retraité
    Secteur : Associations - ONG

    Informations forums :
    Inscription : Décembre 2012
    Messages : 55
    Points : 29
    Points
    29
    Par défaut Optimiser une requête préparée
    Bonjour,
    J'utilise une requette préparée qui fonctionne:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    elseif ($id_sortie==10){$req = $bdd->prepare("UPDATE resultat_2015 SET concentration_vtt = :points_comptes WHERE id=:id_r ");
    $req->execute(array('points_comptes'=>$donnees['points_comptes'],'id_r'=>$donnees['id']));$req->execute(array('points_comptes'=>$donnees['points_comptes'],'id_r'=>$donnees['id']));
    if ($donnees['id']==39 OR $donnees['id']==40 OR $donnees['id']==42 OR $donnees['id']==43 OR $donnees['id']==44  ) {  $req->execute(array('points_comptes'=>$donnees['total_cyclo'], 'id_r'=>$donnees['id']));}}
    Je voudrai remplacer "concentration_vtt" par une chaine de caractères "$sortie" contenant "concentration_vtt" .
    Comment écrire cette requette?
    Merci
    Syldup

  2. #2
    Modérateur
    Avatar de grunk
    Homme Profil pro
    Lead dév - Architecte
    Inscrit en
    Août 2003
    Messages
    6 691
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : France, Côte d'Or (Bourgogne)

    Informations professionnelles :
    Activité : Lead dév - Architecte
    Secteur : Industrie

    Informations forums :
    Inscription : Août 2003
    Messages : 6 691
    Points : 20 222
    Points
    20 222
    Par défaut
    Les tables et colonnes ne peuvent pas faire l'objet de paramètre dans ta requête.
    Tu dois simplement utiliser une variable normale :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    $bdd->prepare("UPDATE resultat_2015 $sortie = :points_comptes WHERE id=:id_r ");
    Bien penser à filtrer cette variable si sa valeur viens d'une entrée utilisateur.
    Pry Framework php5 | N'oubliez pas de consulter les FAQ Java et les cours et tutoriels Java

  3. #3
    Modérateur

    Avatar de CinePhil
    Homme Profil pro
    Ingénieur d'études en informatique
    Inscrit en
    Août 2006
    Messages
    16 799
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 60
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Ingénieur d'études en informatique
    Secteur : Enseignement

    Informations forums :
    Inscription : Août 2006
    Messages : 16 799
    Points : 34 031
    Points
    34 031
    Billets dans le blog
    14
    Par défaut
    Je voudrai remplacer "concentration_vtt" par une chaine de caractères "$sortie" contenant "concentration_vtt" .
    Si c'est toujours cette colonne qui doit être mise à jour, c'est parfaitement inutile !
    Philippe Leménager. Ingénieur d'étude à l'École Nationale Supérieure de Formation de l'Enseignement Agricole. Autoentrepreneur.
    Mon ancien blog sur la conception des BDD, le langage SQL, le PHP... et mon nouveau blog sur les mêmes sujets.
    « Ce que l'on conçoit bien s'énonce clairement, et les mots pour le dire arrivent aisément ». (Nicolas Boileau)
    À la maison comme au bureau, j'utilise la suite Linux Mageïa !

  4. #4
    Nouveau membre du Club
    Homme Profil pro
    retraité
    Inscrit en
    Décembre 2012
    Messages
    55
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Vendée (Pays de la Loire)

    Informations professionnelles :
    Activité : retraité
    Secteur : Associations - ONG

    Informations forums :
    Inscription : Décembre 2012
    Messages : 55
    Points : 29
    Points
    29
    Par défaut
    Merci pour vos réponses
    Actuellement, je répète 30 fois la requette car j'ai 30 sorties à mettre à jour.
    Je voudrai n'écrire q'une requette avec $sortie qui comporterai le nom de la sorties exemple:"concentration_vtt"
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
     
    			if ($id_sortie==1){$req = $bdd->prepare("UPDATE resultat_2015 SET la_mortagnaise = :points_comptes WHERE id=:id_r ");
    				$req->execute(array('points_comptes'=>$donnees['points_comptes'],'id_r'=>$donnees['id']));
    				if ($donnees['id']==39 OR $donnees['id']==40 OR $donnees['id']==42 OR $donnees['id']==43 OR $donnees['id']==44  ) {  $req->execute(array('points_comptes'=>$donnees['total_cyclo'], 'id_r'=>$donnees['id']));}}
     
     
    			elseif ($id_sortie==2){$req = $bdd->prepare("UPDATE resultat_2015 SET randonnee_du_telethon = :points_comptes WHERE id=:id_r ");	
    				$req->execute(array('points_comptes'=>$donnees['points_comptes'],'id_r'=>$donnees['id']));
    				if ($donnees['id']==39 OR $donnees['id']==40 OR $donnees['id']==42 OR $donnees['id']==43 OR $donnees['id']==44  ) {  $req->execute(array('points_comptes'=>$donnees['total_cyclo'], 'id_r'=>$donnees['id']));}
    				}
    Je voudrai remplacer "la_mortagnaise" ou "randonnee_du_telethon" par une variable $sortie qui comporterait soit "la_mortagnaise" ou "randonnee_du_telethon" ou trente autre sorties.
    J'ai remplacé la sortie par $sortie mais ça ne fonctionne pas.

  5. #5
    Modérateur
    Avatar de sabotage
    Homme Profil pro
    Inscrit en
    Juillet 2005
    Messages
    29 208
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations forums :
    Inscription : Juillet 2005
    Messages : 29 208
    Points : 44 155
    Points
    44 155
    Par défaut
    Code : 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
    if ($id_sortie==1) {
        $col = 'la_mortagnaise';
    }
    elseif ($id_sortie==2) {
        $col = 'randonnee_du_telethon';
    }
    else {
       exit('colonne non définie');
    }
    $req = $bdd->prepare("UPDATE resultat_2015 SET ". $col ." = :points_comptes WHERE id=:id_r ");
     
    if ($donnees['id'] >= 39 && $donnees['id'] <=44  ) {
           $valeur =   $donnees['total_cyclo'];
    }
    else {
          $valeur = $donnees['points_comptes'];
    }
     
    $req->execute(array('points_comptes'=>$valeur, 'id_r'=>$donnees['id']));
    N'oubliez pas de consulter les FAQ PHP et les cours et tutoriels PHP

  6. #6
    Nouveau membre du Club
    Homme Profil pro
    retraité
    Inscrit en
    Décembre 2012
    Messages
    55
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Vendée (Pays de la Loire)

    Informations professionnelles :
    Activité : retraité
    Secteur : Associations - ONG

    Informations forums :
    Inscription : Décembre 2012
    Messages : 55
    Points : 29
    Points
    29
    Par défaut
    Merci pour la réponse.
    Je vais essayé avec ce code mais, si je remplace $col par $sortie, ça marcherai aussi ?
    $sortie contient déjà le nom de la sortie.
    Syldup

  7. #7
    Nouveau membre du Club
    Homme Profil pro
    retraité
    Inscrit en
    Décembre 2012
    Messages
    55
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Vendée (Pays de la Loire)

    Informations professionnelles :
    Activité : retraité
    Secteur : Associations - ONG

    Informations forums :
    Inscription : Décembre 2012
    Messages : 55
    Points : 29
    Points
    29
    Par défaut
    OK çà fonctionne.
    J'ai simplement remplacé "randonnee_du_telethon" par " ". $sortie ." "
    Et je l'ai fait qu'une fois.
    Merci pour votre aide
    Cordialement
    Syldup

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

Discussions similaires

  1. Optimiser une requête de "classement"
    Par Manu0086 dans le forum Requêtes
    Réponses: 7
    Dernier message: 09/03/2006, 18h47
  2. besoin d'aide pour optimiser une requête
    Par jisse dans le forum Langage SQL
    Réponses: 4
    Dernier message: 27/01/2006, 09h41
  3. Optimiser une requête..est-ce possible ?
    Par Thierry8 dans le forum Langage SQL
    Réponses: 9
    Dernier message: 27/09/2005, 11h31
  4. Optimiser une requête SQL d'un moteur de recherche
    Par kibodio dans le forum Langage SQL
    Réponses: 2
    Dernier message: 06/03/2005, 20h55

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