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 :

Mettre des conditions dans une requête mysql avec pdo [MySQL]


Sujet :

PHP & Base de données

  1. #1
    Membre à l'essai
    Profil pro
    Inscrit en
    Octobre 2010
    Messages
    19
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2010
    Messages : 19
    Points : 13
    Points
    13
    Par défaut Mettre des conditions dans une requête mysql avec pdo
    Bonjour, je vais commencer par un exemple afin d'expliquer le probleme:
    Dans le formulaire les champs avec les variables $var2 et $var3 ne sont pas obligatoire mais si elles existent je doit les insérés dans la base.
    Je fait donc 4 conditions, une avec $var2 et $var3, une avec seulement $var2, une avec seulement $var3, et une sans aucune des deux.

    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
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
     
    if (!empty($var2) AND !empty($var3))
    {                               
      $req = $bdd->prepare('INSERT INTO table(id, champ1, champ2, champ3)
      VALUES("", :var1, :var2, :var3)');
     
      $req->bindValue(':var1', $var1, PDO::PARAM_STR);
      $req->bindValue(':var2', $var2, PDO::PARAM_STR);
      $req->bindValue(':var3', $var3, PDO::PARAM_STR);
      $req->execute();
      $req->closeCursor();
      }
    if (!empty($var2) AND empty($var3))
    {    
      $req = $bdd->prepare('INSERT INTO table(id, champ1, champ2)
      VALUES("", :var1, :var2)');
     
      $req->bindValue(':var1', $var1, PDO::PARAM_STR);
      $req->bindValue(':var2', $var2, PDO::PARAM_STR);
      $req->execute();
      $req->closeCursor();
    }
    if (empty($var2) AND !empty($var3))
    {    
     ...
    }
    if (empty($var2) AND empty($var3))
    {    
     ....
    }
    C'est super long et répétitif.
    Je voudrais avoir quelque chose comme ceci:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
     
      $req = $bdd->prepare('INSERT INTO table(id, champ1, champ2, champ3)
      VALUES("", :var1, :var2, :var3)');
     
      $req->bindValue(':var1', $var1, PDO::PARAM_STR);
      if(!empty($var2)) $req->bindValue(':var2', $var2, PDO::PARAM_STR);
      if(!empty($var3)) $req->bindValue(':var3', $var3, PDO::PARAM_STR);
      $req->execute();
      $req->closeCursor();
    Avec les bonnes conditions dans la requête qui font apparaitre les champs et les marqueurs nommés s'ils existent.

    Il y a t-il une solution ?

  2. #2
    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
    Il existe plusieurs facon de voir les choses mais la plus simple :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
      $req = $bdd->prepare('INSERT INTO table(champ1, champ2, champ3)
      VALUES(:var1, :var2, :var3)');
      $req->execute(array(':var1'=>$var1, ':var2'=>$var2, ':var3'=>$var3));

  3. #3
    Membre à l'essai
    Profil pro
    Inscrit en
    Octobre 2010
    Messages
    19
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2010
    Messages : 19
    Points : 13
    Points
    13
    Par défaut
    Je viens d'essayer, si toutes les variables ne sont pas définies ca ne marche pas.

  4. #4
    Membre à l'essai
    Profil pro
    Inscrit en
    Octobre 2010
    Messages
    19
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2010
    Messages : 19
    Points : 13
    Points
    13
    Par défaut
    J'ai trouver, il suffit de mettre 0 si la variable n'existe pas:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
      if(!empty($_POST['var2'])) $var2 = $_POST['var2'];
      else $var2 = 0;
      if(!empty($_POST['var3'])) $var3 = $_POST['var3'];
      else $var3= 0;
      $req = $bdd->prepare('INSERT INTO table(champ1, champ2, champ3)
      VALUES(:var1, :var2, :var3)');
      $req->execute(array(':var1'=>$var1, ':var2'=>$var2, ':var3'=>$var3));

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

Discussions similaires

  1. Mettre des variables dans une requête SQL
    Par tamtam64 dans le forum Macros et VBA Excel
    Réponses: 12
    Dernier message: 20/01/2015, 13h25
  2. Des espaces dans une requête MySQL
    Par Arn_no dans le forum Requêtes
    Réponses: 14
    Dernier message: 25/07/2014, 09h10
  3. Des conditions dans une requête
    Par pierrOPSG dans le forum Requêtes et SQL.
    Réponses: 6
    Dernier message: 24/03/2008, 13h29
  4. Réponses: 5
    Dernier message: 06/02/2008, 16h01
  5. Besoin de retrouner des 0 aussi dans une requête SQL avec JOIN
    Par Jean-Marc68 dans le forum PostgreSQL
    Réponses: 3
    Dernier message: 05/11/2007, 14h45

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