Précédent   Forum des professionnels en informatique > PHP > PHP & SGBD > PDO
PDO Forum d'entraide sur PDO (PHP Data Objects) : pilote générique de bases de données avec PHP. Avant de poster -> FAQ PDO et Cours PDO
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 26/04/2006, 17h46   #1
Membre Expert
 
Avatar de eric.pommereau
 
Homme ERIC POMMEREAU
Ingénieur intégration
Inscription : décembre 2004
Messages : 683
Détails du profil
Informations personnelles :
Nom : Homme ERIC POMMEREAU
Âge : 38
Localisation : France

Informations professionnelles :
Activité : Ingénieur intégration
Secteur : Administration - Collectivité locale

Informations forums :
Inscription : décembre 2004
Messages : 683
Points : 1 294
Points : 1 294
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

@+
eric.pommereau est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 26/04/2006, 17h46   #2
Membre Expert
 
Avatar de eric.pommereau
 
Homme ERIC POMMEREAU
Ingénieur intégration
Inscription : décembre 2004
Messages : 683
Détails du profil
Informations personnelles :
Nom : Homme ERIC POMMEREAU
Âge : 38
Localisation : France

Informations professionnelles :
Activité : Ingénieur intégration
Secteur : Administration - Collectivité locale

Informations forums :
Inscription : décembre 2004
Messages : 683
Points : 1 294
Points : 1 294
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

@+
eric.pommereau est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 02/05/2006, 17h23   #3
Membre expérimenté
 
Inscription : octobre 2004
Messages : 872
Détails du profil
Informations forums :
Inscription : octobre 2004
Messages : 872
Points : 582
Points : 582
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
jeff_! est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 02/05/2006, 22h56   #4
Membre expérimenté
 
Inscription : octobre 2004
Messages : 872
Détails du profil
Informations forums :
Inscription : octobre 2004
Messages : 872
Points : 582
Points : 582
Citation:
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
jeff_! est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 03/05/2006, 01h00   #5
Membre Expert
 
Inscription : juillet 2004
Messages : 1 033
Détails du profil
Informations forums :
Inscription : juillet 2004
Messages : 1 033
Points : 1 050
Points : 1 050
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 :
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,
};
ePoX est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 03/05/2006, 09h14   #6
Membre Expert
 
Avatar de eric.pommereau
 
Homme ERIC POMMEREAU
Ingénieur intégration
Inscription : décembre 2004
Messages : 683
Détails du profil
Informations personnelles :
Nom : Homme ERIC POMMEREAU
Âge : 38
Localisation : France

Informations professionnelles :
Activité : Ingénieur intégration
Secteur : Administration - Collectivité locale

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

Merci de voter aide en tout cas

@+
eric.pommereau est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 02/02/2008, 14h42   #7
Membre confirmé
 
Inscription : décembre 2002
Messages : 451
Détails du profil
Informations forums :
Inscription : décembre 2002
Messages : 451
Points : 265
Points : 265
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é.
weed est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 30/12/2008, 16h26   #8
Nouveau Membre du Club
 
Avatar de kreatik
 
Inscription : juin 2007
Messages : 92
Détails du profil
Informations forums :
Inscription : juin 2007
Messages : 92
Points : 37
Points : 37
Envoyer un message via ICQ à kreatik
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 ?
kreatik est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 25/06/2009, 01h44   #9
Nouveau Membre du Club
 
Avatar de kreatik
 
Inscription : juin 2007
Messages : 92
Détails du profil
Informations forums :
Inscription : juin 2007
Messages : 92
Points : 37
Points : 37
Envoyer un message via ICQ à kreatik
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 ?
__________________

kreatik est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 25/06/2009, 02h04   #10
Membre chevronné
 
Avatar de metagoto
 
Inscription : juin 2009
Messages : 632
Détails du profil
Informations forums :
Inscription : juin 2009
Messages : 632
Points : 641
Points : 641
Je ne fais pas de bindparam.
ex:

Code :
$prepare = 'insert into ... values (?, ?, NOW(), ?)';
Requête bidon qui insérerait 3 params bindés ainsi qu'un sql NOW()
metagoto est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 25/06/2009, 10h40   #11
Nouveau Membre du Club
 
Avatar de kreatik
 
Inscription : juin 2007
Messages : 92
Détails du profil
Informations forums :
Inscription : juin 2007
Messages : 92
Points : 37
Points : 37
Envoyer un message via ICQ à kreatik
Je me doute que ceci fonctionne d'ou ma question !
__________________

kreatik est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 25/06/2009, 14h43   #12
Membre chevronné
 
Avatar de metagoto
 
Inscription : juin 2009
Messages : 632
Détails du profil
Informations forums :
Inscription : juin 2009
Messages : 632
Points : 641
Points : 641
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
metagoto est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 25/06/2009, 14h51   #13
Nouveau Membre du Club
 
Avatar de kreatik
 
Inscription : juin 2007
Messages : 92
Détails du profil
Informations forums :
Inscription : juin 2007
Messages : 92
Points : 37
Points : 37
Envoyer un message via ICQ à kreatik
oui mais cette valeur peut être à NULL ou alors une date et donc tu prépare ta requête 2 foix ??
__________________

kreatik est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 25/06/2009, 15h35   #14
Membre chevronné
 
Avatar de metagoto
 
Inscription : juin 2009
Messages : 632
Détails du profil
Informations forums :
Inscription : juin 2009
Messages : 632
Points : 641
Points : 641
Si c'est invariant lors des execute(), alors je ferais:

Code :
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()
metagoto est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité Cette discussion est résolue.
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 02h51.


 
 
 
 
Partenaires

Hébergement Web