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

Langage PHP Discussion :

Les types string/int en résultats d'une requête


Sujet :

Langage PHP

  1. #1
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Mars 2009
    Messages
    38
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Mars 2009
    Messages : 38
    Points : 28
    Points
    28
    Par défaut Les types string/int en résultats d'une requête
    Bonjour, j'ai quelques problèmes avec les types dans une variables.

    Situation :

    mysql : 5.0, Jeu de caractères : UTF-8 Unicode (utf8), Interclassement : utf8_unicode_ci

    Problème
    ma requete : 'SELECT nom, quantite FROM users WHERE id="1"'

    Dans la base de données : nom(string) et quantite(int).

    Mon problème, quand je fais un var_dump sur quantite apres un fetch_array, il me l'affiche comme un string...

    Du coup, pour faire des tests, pas évident quand on attend un int...

    J'ai cherché et je ne comprend pas d'où peut venir le problème,

    Merci.

  2. #2
    Membre confirmé
    Profil pro
    Inscrit en
    Novembre 2007
    Messages
    453
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2007
    Messages : 453
    Points : 550
    Points
    550
    Par défaut
    Je vois pas où est le problème. La conversion se fait automatiquement, ou bien :

    Code php : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    $ma_variable = (int)($ma_variable);

  3. #3
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Mars 2009
    Messages
    38
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Mars 2009
    Messages : 38
    Points : 28
    Points
    28
    Par défaut
    J'ai pas envie de devoir faire un cast sur chaqu'une de mes variables... Je ne comprend pas pourquoi ma requete me donne comme résultat avec des string alors que dans ma table elles sont stockées sous forme int...

  4. #4
    Membre confirmé
    Profil pro
    Inscrit en
    Novembre 2007
    Messages
    453
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2007
    Messages : 453
    Points : 550
    Points
    550
    Par défaut
    Je vois vraiment pas... en php il ne devrait pas y avoir trop de problèmes sur la conversion de variables.
    Même en faisant :

    Code php : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    $toto = "7";
    echo $toto*2;

    Ca devrait quand même marcher ...

  5. #5
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Mars 2009
    Messages
    38
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Mars 2009
    Messages : 38
    Points : 28
    Points
    28
    Par défaut
    ma requete :

    $zones_id = $db->fetch_row($db->query('SELECT * FROM villages WHERE 1=1'));

    qui retourne un tableau contenant zone1, zone2, ...

    Dans ma table, zone1, zone2, ... sont des int, mais lorsque je fais un var_dump sur $zone_id, j'obtiens :

    array(3) { [0]=> string(1) "1" [1]=> string(1) "1" [2]=> string(6) "lablue" }

    Mon problème, pour faire une opération du style

    if($zones_id['0'] === 1) {
    echo "dd";
    }

    ça ne fonctionne pas.

  6. #6
    Membre éclairé
    Profil pro
    Inscrit en
    Mars 2005
    Messages
    625
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2005
    Messages : 625
    Points : 822
    Points
    822
    Par défaut
    Un truc à savoir, c'est que, comme dans un grand nombre de langages, tout ce qui provient de sources extérieures à un script est systématiquement typé en string. Que ça provienne de base de données, fichiers, GET/POST etc.

    Faut faire avec. Caster si tu es sûre de ce que tu reçois, sinon tester.

  7. #7
    Membre confirmé
    Profil pro
    Inscrit en
    Novembre 2007
    Messages
    453
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2007
    Messages : 453
    Points : 550
    Points
    550
    Par défaut
    Pourquoi === ?
    == suffit, pour ne pas prendre en compte le type de la variable.

  8. #8
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Mars 2009
    Messages
    38
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Mars 2009
    Messages : 38
    Points : 28
    Points
    28
    Par défaut
    Je veux absolument des int car je compte faire des opérations sur les résultats, ça sera plus rapide sur une variable de type int que sur un string non?

    En tout cas, merci pour vos réponses.

  9. #9
    Membre averti
    Profil pro
    Inscrit en
    Juillet 2003
    Messages
    343
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2003
    Messages : 343
    Points : 392
    Points
    392
    Par défaut
    +1 pour tous les messages sachav
    $ma_variable = (int)($ma_variable);

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

Discussions similaires

  1. [Débutant] récupérer résultat d'une requête select de type int
    Par hamzawhy dans le forum C#
    Réponses: 6
    Dernier message: 12/06/2014, 18h44
  2. [C#] Convertion de type (string/int)
    Par M1000 dans le forum Windows Forms
    Réponses: 4
    Dernier message: 22/05/2006, 17h03
  3. Transformer les résultats d'une requête dans un autre ordre
    Par keikun dans le forum MS SQL Server
    Réponses: 6
    Dernier message: 12/04/2006, 17h29
  4. Limiter les résultats d'une requête à \today\' - n jours
    Par Eddy Duflos dans le forum Langage SQL
    Réponses: 2
    Dernier message: 19/10/2005, 09h46
  5. [JDBC] Stocker les résultats d'une requête
    Par etiennegaloup dans le forum JDBC
    Réponses: 9
    Dernier message: 26/07/2005, 19h18

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