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

Requêtes MySQL Discussion :

PDO fetch retourne un tableau de chaine [MySQL-5.5]


Sujet :

Requêtes MySQL

  1. #1
    Membre à l'essai
    Homme Profil pro
    Conseil - Consultant en systèmes d'information
    Inscrit en
    Avril 2014
    Messages
    9
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 57
    Localisation : France

    Informations professionnelles :
    Activité : Conseil - Consultant en systèmes d'information
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2014
    Messages : 9
    Points : 16
    Points
    16
    Par défaut PDO fetch retourne un tableau de chaine
    Bonjour,
    Désolé d'avance pour cette question, qui me semble toute simple.
    Je souhaiterai que sur un fetch(PDO::FETCH_ASSOC) obtenir un tableau dont le type des données soit le type défini dans la table de base et pas des chaines de caractères.

    $sqlprep = $this->pdo->prepare($sql);
    if($sqlprep->execute()) {
    $row = $sqlprep->fetch(PDO::FETCH_ASSOC);
    }

    En désespoir de cause j'ai essayé dans le constructeur de ma classe pdo, un peu tout ce que j'ai trouvé dans les forums...
    $this->pdo->setAttribute(PDO::ATTR_STRINGIFY_FETCHES, false);
    $this->pdo->setAttribute(PDO::ATTR_EMULATE_PREPARES, false);

    Mais rien n'y fait.

    Merci beaucoup

  2. #2
    Expert éminent sénior Avatar de Artemus24
    Homme Profil pro
    Agent secret au service du président Ulysses S. Grant !
    Inscrit en
    Février 2011
    Messages
    6 380
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Agent secret au service du président Ulysses S. Grant !
    Secteur : Finance

    Informations forums :
    Inscription : Février 2011
    Messages : 6 380
    Points : 19 062
    Points
    19 062
    Par défaut
    Salut yann1792.

    Citation Envoyé par yann1792
    obtenir un tableau dont le type des données soit le type défini dans la table de base et pas des chaines de caractères.
    C'est cette phrase que je ne comprends pas !

    Pouvez-vous donner un exemple de ce que vous voulez obtenir ?

    @+
    Si vous êtes de mon aide, vous pouvez cliquer sur .
    Mon site : http://www.jcz.fr

  3. #3
    Membre à l'essai
    Homme Profil pro
    Conseil - Consultant en systèmes d'information
    Inscrit en
    Avril 2014
    Messages
    9
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 57
    Localisation : France

    Informations professionnelles :
    Activité : Conseil - Consultant en systèmes d'information
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2014
    Messages : 9
    Points : 16
    Points
    16
    Par défaut
    Si ma base de données est structurée
    Id - Int(11)
    Nom - Varchar(30)
    Montant - Decimal(17.7)

    $tab = Fetch(PDO::FETCH_ASSOC)

    Toutes les colonnes sont de $tab sont typées "string"
    Id string "5"
    Nom string "Yann"
    Montant string "1250.42"

    Alors que je je souhaite juste que les colonnes de $tab soit dans le type de la base de données (int,string et double).
    Merci

  4. #4
    Expert éminent sénior Avatar de Artemus24
    Homme Profil pro
    Agent secret au service du président Ulysses S. Grant !
    Inscrit en
    Février 2011
    Messages
    6 380
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Agent secret au service du président Ulysses S. Grant !
    Secteur : Finance

    Informations forums :
    Inscription : Février 2011
    Messages : 6 380
    Points : 19 062
    Points
    19 062
    Par défaut
    Salut yann1792.

    Il est tout à fait normal que php transforme les données provenant de MySql sous forme d'une chaîne de caractères.
    Tu ne peux pas réceptionner ces données dans le type utilisé par MySql car php ne sait pas les traiter.
    De plus, il se peut que le type utilisé soit inconnu de php.

    C'est à toi de les convertir pour l'usage que tu veux en faire. Par exemple, pour un integer, tu utilises le cast, comme ci-après :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    $id = (int) $row['id'];
    Ou encore, en utilisant le type double :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    $montant = (double) $row['montant'];
    De plus, les seuls types qui existent sous php sont : integer, double, string, object, boolean, array, resource, NULL et unknown type.
    Alors que sous MySql, tu as aussi : bigint, text, blob ...

    Il ne faut pas oublier que php ne travaille pas qu'avec ce SGBDR. Le seul moyen d'être compatible, est de transformer la donnée sous forme d'une chaîne de caractères.

    Le mieux serait de poser la question dans le forum consacré à php.

    @+
    Si vous êtes de mon aide, vous pouvez cliquer sur .
    Mon site : http://www.jcz.fr

  5. #5
    Membre à l'essai
    Homme Profil pro
    Conseil - Consultant en systèmes d'information
    Inscrit en
    Avril 2014
    Messages
    9
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 57
    Localisation : France

    Informations professionnelles :
    Activité : Conseil - Consultant en systèmes d'information
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2014
    Messages : 9
    Points : 16
    Points
    16
    Par défaut
    Merci de ton retour,
    J'ai également posé la question sur ce forum PHP / PDO
    Je suis un peu... consterné :-)
    Je bosse sur des outils de gestion, ou les requêtes, les écrans et les éditions sont créées dynamiquement.
    Je ne sais pas à l'avance les colonnes qui composeront ma requête, je ne peux donc pas faire un cast sur chaque valeur.. en dur.
    Il semble y avoir un paramètre si j'ai tout compris mais il ne veut pas marcher chez moi :-)
    PDO::ATTR_EMULATE_PREPARES à mettre à false
    Il y a des jours comme ça ...

    Mais merci de ton retour.

  6. #6
    Expert éminent sénior Avatar de Artemus24
    Homme Profil pro
    Agent secret au service du président Ulysses S. Grant !
    Inscrit en
    Février 2011
    Messages
    6 380
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Agent secret au service du président Ulysses S. Grant !
    Secteur : Finance

    Informations forums :
    Inscription : Février 2011
    Messages : 6 380
    Points : 19 062
    Points
    19 062
    Par défaut
    Salut yann1792.

    Citation Envoyé par yann1792
    Alors que je je souhaite juste que les colonnes de $tab soit dans le type de la base de données (int,string et double).
    Que ferez vous avec ? Votre valeur sera inexploitable sous php !

    Citation Envoyé par yann1792
    Il semble y avoir un paramètre si j'ai tout compris mais il ne veut pas marcher chez moi :-)
    PDO::ATTR_EMULATE_PREPARES à mettre à false
    Voici le commentaire associé à ce paramètre :
    PDO::ATTR_EMULATE_PREPARES Active ou désactive la simulation des requêtes préparées. Certains pilotes ne supportent pas nativement les requêtes préparées ou en ont un support limité. Ce paramètre force PDO à émuler (TRUE) les requêtes préparées ou (FALSE) à utiliser l'interface native. Il tentera toujours une émulation si le pilote n'a pas de support natif. bool requis.
    Aucun rapport avec votre problème.

    Citation Envoyé par yann1792
    Je ne sais pas à l'avance les colonnes qui composeront ma requête, je ne peux donc pas faire un cast sur chaque valeur.. en dur.
    J'ai fait quelques recherches mais sans succès.
    Aucun problème pour récupérer les valeurs sous forme d'une chaîne de caractères. Mais je n'ai jamais pu récupérer le type associé à la colonne.

    Désolé de ne pas pouvoir vous aidez.

    @+
    Si vous êtes de mon aide, vous pouvez cliquer sur .
    Mon site : http://www.jcz.fr

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

Discussions similaires

  1. méthode qui retourne un tableau de chaines de caracteres
    Par Camel200 dans le forum Débuter
    Réponses: 2
    Dernier message: 10/02/2009, 15h36
  2. Réponses: 16
    Dernier message: 02/05/2007, 13h36
  3. Retourner un tableau ?
    Par chateau_dur dans le forum C++
    Réponses: 8
    Dernier message: 20/08/2005, 12h11
  4. [plpgsql] comment retourner un tableau
    Par hpghost dans le forum PostgreSQL
    Réponses: 3
    Dernier message: 27/06/2004, 21h09
  5. Fonction qui retourne un tableau
    Par _lara_ dans le forum ASP
    Réponses: 6
    Dernier message: 24/05/2004, 15h06

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