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 :

Le paramètre fetchType de sqlsrv_fetch_array() [SQL-Server]


Sujet :

PHP & Base de données

  1. #1
    Membre expérimenté
    Avatar de Jarodd
    Profil pro
    Inscrit en
    Août 2005
    Messages
    851
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2005
    Messages : 851
    Points : 1 717
    Points
    1 717
    Par défaut Le paramètre fetchType de sqlsrv_fetch_array()
    Bonjour,

    J'ai une question sur le paramètre fetchType de sqlsrv_fetch_array() :

    J'utilise ce code :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    while ( $row = sqlsrv_fetch_array($q, $type) ) { // $q est le retour de sqlsrv_query()
        $result[] = $row;
    }
    Lors de l'appel à ce code, je veux passer dans la variable $type une de ces constances :
    SQLSRV_FETCH_ASSOC
    SQLSRV_FETCH_BOTH
    SQLSRV_FETCH_NUMERIC

    Or passer une string (comme dans l'exemple) provoque une erreur :

    Warning : sqlsrv_fetch_array() expects parameter 2 to be long, string given
    Si je mets directement la constante SQLSRV_FETCH_xxx, cela fonctionne bien. C'est vraiment la string qui coince, même si elle est de la même valeur que les constantes. Sauf que je ne vois pas pourquoi je devrais passer un type "long"

    Je voudrais savoir si ce comportement était normal à vos yeux : on ne peux donc pas stocker dans une variable la valeur d'une constante ? Valeur qui bougerait selon le cas...

    Pour info, j'ai réussi à utiliser la fonction en passant un entier 1, 2 ou 3 à la place des constantes, comme l'indique la déclaration de la fonction dans la doc. Mais j'aurai préféré conserver la variable avec la donnée textuelle plutôt qu'un entier qui n'est pas explicite en lui-même.

    Merci pour vos avis

  2. #2
    Membre éprouvé
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Août 2012
    Messages
    631
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Août 2012
    Messages : 631
    Points : 1 220
    Points
    1 220
    Par défaut
    Or passer une string (comme dans l'exemple) provoque une erreur :
    la signature de la fonction sqlsrv_fetch_array(int $q, int $type) montre qu'elle prend en paramètre 2 variables de type int. Lui passé un autre type qu'un integer génère forcement un warning.

    Quel est le type retourné par cette variable?
    Code php : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    static $type =  SQLSRV_FETCH_BOTH;
    gettype($type);//

  3. #3
    Membre expérimenté
    Avatar de Jarodd
    Profil pro
    Inscrit en
    Août 2005
    Messages
    851
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2005
    Messages : 851
    Points : 1 717
    Points
    1 717
    Par défaut
    Oui j'avais vu qu'avec un entier cela fonctionnait. Seulement tous les exemples sont donnés avec une constante. Je pensais que passer une valeur identique à la constante pourrait fonctionner...

  4. #4
    Expert éminent sénior
    Avatar de rawsrc
    Homme Profil pro
    Dev indep
    Inscrit en
    Mars 2004
    Messages
    6 142
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 47
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Dev indep

    Informations forums :
    Inscription : Mars 2004
    Messages : 6 142
    Points : 16 545
    Points
    16 545
    Billets dans le blog
    12
    Par défaut
    Salut,

    fais comme ça :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    $type = 'SQLSRV_FETCH_ASSOC';
     
    while ( $row = sqlsrv_fetch_array($q, constant($type)) ) { // $q est le retour de sqlsrv_query()
        $result[] = $row;
    }
    constant()

  5. #5
    Membre expérimenté
    Avatar de Jarodd
    Profil pro
    Inscrit en
    Août 2005
    Messages
    851
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2005
    Messages : 851
    Points : 1 717
    Points
    1 717
    Par défaut
    Merci rawsrc, c'est tellement simple que j'ai honte de ne pas y avoir pensé

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

Discussions similaires

  1. créer un noeuds avec des paramétres
    Par Toxine77 dans le forum XMLRAD
    Réponses: 5
    Dernier message: 21/01/2003, 16h11
  2. [xmlrad] Pb de paramètre ?
    Par Pm dans le forum XMLRAD
    Réponses: 7
    Dernier message: 07/01/2003, 14h37
  3. [SWT] Problème de paramètre GridData
    Par yolepro dans le forum SWT/JFace
    Réponses: 4
    Dernier message: 06/12/2002, 10h37
  4. passage en paramètre d'un array dynamique 2D
    Par Guigui_ dans le forum Langage
    Réponses: 4
    Dernier message: 27/11/2002, 19h47
  5. Paramètre requete SQL (ADOQuery)
    Par GaL dans le forum C++Builder
    Réponses: 3
    Dernier message: 30/07/2002, 11h24

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