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 :

Type date dans bindParam() [PDO]


Sujet :

PHP & Base de données

  1. #1
    Membre chevronné
    Avatar de eric.pommereau
    Homme Profil pro
    Ingénieur, pôle cartographie
    Inscrit en
    Décembre 2004
    Messages
    715
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 50
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Ingénieur, pôle cartographie
    Secteur : Administration - Collectivité locale

    Informations forums :
    Inscription : Décembre 2004
    Messages : 715
    Points : 1 790
    Points
    1 790
    Par défaut Type date dans bindParam()
    Dans PDO, les requêtes parametrées permettent l'injection des paramètres. Certains types (pour les paramètres) peuvent être précisés (PDO:ARAM_STR --> chaines, PDO:ARAM_INT --> entiers)

    En revanche je n'ai rien vu concernant les dates ...

    Comment PDO se débrouille t il pour faire la conversion attendu que chaque SGBD n'a pas les mêmes critères de date.
    merci

    @+

  2. #2
    Membre chevronné
    Avatar de eric.pommereau
    Homme Profil pro
    Ingénieur, pôle cartographie
    Inscrit en
    Décembre 2004
    Messages
    715
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 50
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Ingénieur, pôle cartographie
    Secteur : Administration - Collectivité locale

    Informations forums :
    Inscription : Décembre 2004
    Messages : 715
    Points : 1 790
    Points
    1 790
    Par défaut
    Dans PDO, les requêtes parametrées permettent l'injection des paramètres. Certains types (pour les paramètres) peuvent être précisés (PDO: PARAM_STR --> chaines, PDO: PARAM_INT --> entiers)

    En revanche je n'ai rien vu concernant les dates ...

    Comment PDO se débrouille t il pour faire la conversion attendu que chaque SGBD n'a pas les mêmes critères de date.
    merci

    @+

  3. #3
    Membre éclairé
    Profil pro
    Inscrit en
    Octobre 2004
    Messages
    882
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2004
    Messages : 882
    Points : 691
    Points
    691
    Par défaut
    salut
    je sais pas du tout
    tente des testes ou va voir dans le source si tu trouve ton bonheur

    on mon avis ca depend de ta db le type doit etre transparent pour pdo, il faut juste utilisé les types supportés par ta sgbd

  4. #4
    Membre éclairé
    Profil pro
    Inscrit en
    Octobre 2004
    Messages
    882
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2004
    Messages : 882
    Points : 691
    Points
    691
    Par défaut
    PDO:ARAM_INT (entier) Représente le type de données INTEGER SQL.
    PDO:ARAM_STR (entier) Représente les types de données CHAR, VARCHAR ou les autres types de données sous forme de chaîne de caractères SQL.
    le type date est de quelle type???
    une petit var_dump devrais suffir

  5. #5
    Membre éprouvé
    Inscrit en
    Juillet 2004
    Messages
    1 027
    Détails du profil
    Informations forums :
    Inscription : Juillet 2004
    Messages : 1 027
    Points : 1 164
    Points
    1 164
    Par défaut
    Peut être qu'il n'y en pas encore tout simplement.

    EDIT

    En trifouillant un peu le source de la dernière version je te confirmes qu'il n'y à rien d'autre que ce qui est inscrit dans la doc.

    cf :
    php_pdo_driver.h ligne 49
    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
     
    #define PDO_DRIVER_API 20060409
    enum pdo_param_type {
     PDO_PARAM_NULL,
     /* int as in long (the php native int type).
      * If you mark a column as an int, PDO expects get_col to return
      * a pointer to a long */
     PDO_PARAM_INT,
     /* get_col ptr should point to start of the string buffer */
     PDO_PARAM_STR,
     /* get_col: when len is 0 ptr should point to a php_stream *,
      * otherwise it should behave like a string. Indicate a NULL field
      * value by setting the ptr to NULL */
     PDO_PARAM_LOB,
     /* get_col: will expect the ptr to point to a new PDOStatement object handle,
      * but this isn't wired up yet */
     PDO_PARAM_STMT, /* hierarchical result set */
     /* get_col ptr should point to a zend_bool */
     PDO_PARAM_BOOL,
    };

  6. #6
    Membre chevronné
    Avatar de eric.pommereau
    Homme Profil pro
    Ingénieur, pôle cartographie
    Inscrit en
    Décembre 2004
    Messages
    715
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 50
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Ingénieur, pôle cartographie
    Secteur : Administration - Collectivité locale

    Informations forums :
    Inscription : Décembre 2004
    Messages : 715
    Points : 1 790
    Points
    1 790
    Par défaut
    Je pensais qu'il y aurait de quoi "convertir" le type date en fonction du SGBD ...

    Merci de voter aide en tout cas

    @+

  7. #7
    Membre chevronné
    Profil pro
    MOA
    Inscrit en
    Décembre 2002
    Messages
    1 095
    Détails du profil
    Informations personnelles :
    Localisation : France, Eure et Loir (Centre)

    Informations professionnelles :
    Activité : MOA

    Informations forums :
    Inscription : Décembre 2002
    Messages : 1 095
    Points : 1 989
    Points
    1 989
    Par défaut
    oki, il n'y a pas de type pour la date

    mais aussi il n'y a pas de type pour les float, les nombres avec virgules si on regarde le code source qui a été posté.

  8. #8
    Membre du Club Avatar de kreatik
    Inscrit en
    Juin 2007
    Messages
    94
    Détails du profil
    Informations forums :
    Inscription : Juin 2007
    Messages : 94
    Points : 62
    Points
    62
    Par défaut
    hello,

    c'est très étrange est-ce que quel qu'un à la réponse à cette question ? pk n'y a t'il pas de type pour les date ou float ?

  9. #9
    Membre du Club Avatar de kreatik
    Inscrit en
    Juin 2007
    Messages
    94
    Détails du profil
    Informations forums :
    Inscription : Juin 2007
    Messages : 94
    Points : 62
    Points
    62
    Par défaut
    J'ai encore le même problème et je retombe ici

    Comment faire pour ajouter un equivalent de NOW() dans un bindParam ? a part le faire "manuellement" avec date() (pas essayé mais ça doit fonctionner) curdate, now et en php time() ne fonctionnent pas du tout et quelque soit param_str int ou meme rien !

    Dans un bindparam pour une colonne timestamp vous faites comment alors ?

  10. #10
    Membre éclairé Avatar de metagoto
    Profil pro
    Hobbyist programmateur
    Inscrit en
    Juin 2009
    Messages
    646
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Hobbyist programmateur

    Informations forums :
    Inscription : Juin 2009
    Messages : 646
    Points : 845
    Points
    845
    Par défaut
    Je ne fais pas de bindparam.
    ex:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    $prepare = 'insert into ... values (?, ?, NOW(), ?)';
    Requête bidon qui insérerait 3 params bindés ainsi qu'un sql NOW()

  11. #11
    Membre du Club Avatar de kreatik
    Inscrit en
    Juin 2007
    Messages
    94
    Détails du profil
    Informations forums :
    Inscription : Juin 2007
    Messages : 94
    Points : 62
    Points
    62
    Par défaut
    Je me doute que ceci fonctionne d'ou ma question !

  12. #12
    Membre éclairé Avatar de metagoto
    Profil pro
    Hobbyist programmateur
    Inscrit en
    Juin 2009
    Messages
    646
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Hobbyist programmateur

    Informations forums :
    Inscription : Juin 2009
    Messages : 646
    Points : 845
    Points
    845
    Par défaut
    Citation Envoyé par kreatik Voir le message
    Je me doute que ceci fonctionne d'ou ma question !
    D'où ma réponse dans mon post précédent: ne fait pas de bindparam pour insérer un sql NOW().
    Ce que j'ai mis fonctionne

  13. #13
    Membre du Club Avatar de kreatik
    Inscrit en
    Juin 2007
    Messages
    94
    Détails du profil
    Informations forums :
    Inscription : Juin 2007
    Messages : 94
    Points : 62
    Points
    62
    Par défaut
    oui mais cette valeur peut être à NULL ou alors une date et donc tu prépare ta requête 2 foix ??

  14. #14
    Membre éclairé Avatar de metagoto
    Profil pro
    Hobbyist programmateur
    Inscrit en
    Juin 2009
    Messages
    646
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Hobbyist programmateur

    Informations forums :
    Inscription : Juin 2009
    Messages : 646
    Points : 845
    Points
    845
    Par défaut
    Si c'est invariant lors des execute(), alors je ferais:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    // $now est 'NOW()' ou NULL etc
    $prepare = 'insert into ... values (?, ?, '.$now.', ?)';
    Si ce n'est pas invariant (susceptible de changer à chaque execute), alors je passerais par un bindparam sur un php date() si vraiment je ne peux pas compter sur une valeur par défaut coté sgdb (NULL, CURRENT_TIMESTAMP etc).

    Généralement, je n'ai pas besoins de passer par un php date()

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

Discussions similaires

  1. Réponses: 2
    Dernier message: 29/05/2007, 16h49
  2. Réponses: 8
    Dernier message: 16/08/2006, 14h39
  3. [ADO] Passage de paramètre de type Date dans une requête
    Par e-ric dans le forum Bases de données
    Réponses: 6
    Dernier message: 25/01/2006, 12h36
  4. Ajouter un champs de type " Date " dans ma base ac
    Par hysteresis dans le forum Langage SQL
    Réponses: 16
    Dernier message: 10/10/2005, 16h10
  5. insertion d'un type date dans une table access
    Par monstour dans le forum ASP
    Réponses: 7
    Dernier message: 18/06/2004, 16h57

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