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

Zend_Db PHP Discussion :

Bind des paramètres d'une requête


Sujet :

Zend_Db PHP

  1. #1
    Membre régulier Avatar de eaglesnipe
    Homme Profil pro
    Ingénieur Etudes et Développement
    Inscrit en
    Janvier 2008
    Messages
    75
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur Etudes et Développement
    Secteur : High Tech - Produits et services télécom et Internet

    Informations forums :
    Inscription : Janvier 2008
    Messages : 75
    Points : 76
    Points
    76
    Par défaut Bind des paramètres d'une requête
    Bonjour à toutes et à tous !

    Je viens vous exposer un petit problème que je rencontre et auquel je n'arrive pas à trouver de solutions satisfaisantes.

    Lorsque je fais une requête simple comme la suivante, tout va bien.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    $select = $db->select()
                 ->from(...)
                 ->where('i.date_begin > "?"', $date_begin);
     
    return $db->fetchAll($select);
    Jusque là, pas de soucis. Maintenant, ma requête utilise 2 (ou plus) variables. J'ai donc voulu mettre en place un binding de la manière suivante :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
    $select = $db->select()
                 ->from(...)
                 ->where('i.date_begin > ":date_begin" AND i.date_close < ":date_close"')
                 ->bind(array(':date_begin' => $date_begin, ':date_close' => $date_close));
     
    return $db->fetchAll($select);
    Et là, plus rien ne va... Je n'ai aucune erreur, la requête s'exécute correctement. Je n'ai simplement pas le résultat escompté. J'ai en fait l'impression que mes dates sont remplacées par un datetime UNIX (1970-01-01)... Et je ne comprend absolument pas pourquoi...

    Si je fixe mes variables en dur, de la manière qui suit, j'obtiens bien le bon résultat :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    $select = $db->select()
                 ->from(...)
                 ->where("i.date_begin > '$date_begin' AND i.date_close < '$date_close'");
     
    return $db->fetchAll($select);
    Où est l'erreur ? La fonction bind est-elle mal utilisée ? Il y a-t-il une autre syntaxe, ou une autre manière de faire ? J'avoue être dans le flou...

    Merci pour l'aide que vous pourrez m'apporter.

  2. #2
    Membre régulier Avatar de eaglesnipe
    Homme Profil pro
    Ingénieur Etudes et Développement
    Inscrit en
    Janvier 2008
    Messages
    75
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur Etudes et Développement
    Secteur : High Tech - Produits et services télécom et Internet

    Informations forums :
    Inscription : Janvier 2008
    Messages : 75
    Points : 76
    Points
    76
    Par défaut
    Bonjour !

    Pour ceux qui seraient confrontés à la même problématique, j'ai finalement contourné le problème en utilisant la fonction quote du Zend Framework :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    $d_b = $db->quote($date_begin, 'DATE');
    $d_c = $db->quote($date_close, 'DATE');
    $db->select()
       ->from(...)
       ->where("i.date_begin > $d_b AND i.date_close < $d_c")
    En revanche, si quelqu'un a une justification sur le le mauvais fonctionnement/utilisation du bind, je serais curieux de savoir !

    Bonne journée !

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

Discussions similaires

  1. Définir les valeurs des paramètres d'une requête
    Par sasuke18 dans le forum Débuter
    Réponses: 9
    Dernier message: 16/12/2010, 20h10
  2. [OpenOffice][Base de données] Afficher des paramètres d'une requête paramétrée dans un formulaire
    Par ggnore dans le forum OpenOffice & LibreOffice
    Réponses: 0
    Dernier message: 02/09/2009, 11h37
  3. Syntaxe des paramètres dans une requête
    Par TiboAppert dans le forum C#
    Réponses: 1
    Dernier message: 29/06/2009, 10h06
  4. Réponses: 1
    Dernier message: 21/03/2006, 14h29
  5. Récupération des paramètres d'une requête
    Par TomPad dans le forum Access
    Réponses: 10
    Dernier message: 16/06/2005, 15h11

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