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 :

Chaine vide transformé en caractère blanc [SQL-Server]


Sujet :

PHP & Base de données

  1. #1
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Juillet 2008
    Messages
    6
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2008
    Messages : 6
    Par défaut Chaine vide transformé en caractère blanc
    Bonjour,
    J'ai migré un site php / fedora / apache / freetds en php / windows 2003 / IIS /API. Dans les deux cas, on attaque la même base MSSQL, sur un serveur w2000.

    Sur le nouveau serveur, Le code suivant:
    $sql=" select '' ";
    $res_id=mssql_query($sql) or die ("Database Error");
    $row=mssql_fetch_row($res_id);
    echo strlen($row[0]);


    renvoi 1

    Sur l'ancien, le même code renvoi 0, ce qui est plus cohérent.

    Avez vous déjà rencontré ce problème? et sauriez vous quel paramètre modifier pour avoir le même comportement qu'avec freetds ? php.ini ? ou l'api mssql ?

  2. #2
    Modérateur
    Avatar de sabotage
    Homme Profil pro
    Inscrit en
    Juillet 2005
    Messages
    29 208
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations forums :
    Inscription : Juillet 2005
    Messages : 29 208
    Par défaut
    Dans l'exemple que tu nous mets, c'est un espace qui est retourné par la requete, c'est donc normal que strlen donne 1.
    Tu ne voulais pas plutot mettre une chaine vide ?
    N'oubliez pas de consulter les FAQ PHP et les cours et tutoriels PHP

  3. #3
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Juillet 2008
    Messages
    6
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2008
    Messages : 6
    Par défaut
    L'idée de base est de ne pas avoir à trop toucher au code, et cela pour deux raisons:
    - je ne suis pas développeur, mais plutôt administrateurs. donc si je touche au code, il faudra le retester, et ça peut être long. En fait, il s'agit d'un site de gestion, et non un site marketing :o)
    - Le code fonctionne correctement sur un autre serveur, et le résultat que j'obien sur celui-ci ne me parait pas bien conforme. A quoi bon passer du temps à corriger du code qui marche ailleurs quand un changement de paramètre suffirait. Reste à trouver lequel ?!? Et si vous n'avez pas ce comportement sur vos machines c'est qu'il doit bien exister une solution.

    Pas simple, hein ?

  4. #4
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Juillet 2008
    Messages
    6
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2008
    Messages : 6
    Par défaut
    Citation Envoyé par sabotage Voir le message
    moi je vois un espace mais bon.
    Non, en fait c'est bien une chaine vide.

    C'est 2 quotes simples espace une double quote :o)

    Voila.

  5. #5
    Modérateur
    Avatar de sabotage
    Homme Profil pro
    Inscrit en
    Juillet 2005
    Messages
    29 208
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations forums :
    Inscription : Juillet 2005
    Messages : 29 208
    Par défaut
    Effectivement me suis fait piegé par la police du forum

    Est-ce que c'est $row[0] qui vaut quelque chose ou est ce que c'est strlen qui compte mal sur "" ?
    N'oubliez pas de consulter les FAQ PHP et les cours et tutoriels PHP

  6. #6
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Juillet 2008
    Messages
    6
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2008
    Messages : 6
    Par défaut
    J'y avait pensé.

    if ($row[0]=='') { echo " vide <br/>"; }
    else { echo strlen($row[0])." caractère. <br/>"; }

    me renvoi bien 1.

    Si je fais un select 'breizping', ça compte bien aussi.

    Pour info aussi:
    PHP Version 5.2.6
    ndwdblib.dll est en version 2000.80.2039.0

  7. #7
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Juillet 2008
    Messages
    6
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2008
    Messages : 6
    Par défaut
    Bon, ça m'a tout l'air d'un bug chez microsoft, et php ne veut rien entendre ...
    http://bugs.php.net/bug.php?id=45527

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

Discussions similaires

  1. [MySQL] transformation de caractères et fichier vide
    Par Invité dans le forum PHP & Base de données
    Réponses: 2
    Dernier message: 17/02/2015, 22h55
  2. Réponses: 35
    Dernier message: 25/06/2008, 16h50
  3. select et caractère blanc dans les chaines
    Par fdCeriag dans le forum DB2
    Réponses: 4
    Dernier message: 15/11/2007, 07h15
  4. [Application] Chaine de + de 255 caractéres
    Par Righetto Dominique dans le forum Langage
    Réponses: 6
    Dernier message: 26/03/2003, 22h49
  5. Transformer un caractère en type énuméré
    Par HT dans le forum Langage
    Réponses: 3
    Dernier message: 22/10/2002, 20h46

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