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 :

Requête NOK depuis PHP, OK depuis SGBD


Sujet :

PHP & Base de données

  1. #1
    Membre éclairé Avatar de peter27x
    Profil pro
    Inscrit en
    Janvier 2007
    Messages
    1 029
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2007
    Messages : 1 029
    Points : 757
    Points
    757
    Par défaut Requête NOK depuis PHP, OK depuis SGBD
    Hello, (sujet résolu, voir plus bas !)

    je construis une requête toute bête dans mon code PHP, par ex.:

    1) cas OK
    $rqt = "SELECT c.nom FROM client c WHERE c.nom = 'Paul';";

    J'exécute: elle marche, j'ai les clients en question, je peux ensuite les afficher dans ma page.


    2) cas NOK
    $rqt = "SELECT c.nom FROM client c WHERE c.nom = 'Hervé';";

    J'exécute: rien, alors qu'il y a bien des Hervé.

    Si j'exécute exactement la même requête sur mon SGBD elle me renvoie bien les Hervé... (c'est vraiment exactement la même requête, j'ai poussé jusqu'à l'afficher dans la page avec un <? echo $rqt; ?> pour la recopier vraiment telle qu'elle est) .

    Après de multiples tests j'ai vu que ça marchait que lorsqu'il n'y avait pas de caractères spéciaux (â, é, ...).

    Je ne vois pas... Les fonctions htmlEntities ou html_entity_decode ne peuvent pas me servir, vu que c'est écrit en direct dans le code PHP comme vous l'avez vu...

    Les charSet non plus ne peuvent être en cause vu que je recopie exactement la requête du PHP dans le SGBD et qu'elle fonctionne... pourtant y'a bien un couac quelle que part ! Mais où ?

    Pour info c'est une base de données FireBird, quand j'exécute ma requête dans le SGBD c'est via FlameRobin menu "Run a query...".

    Merci à ceux qui pourront m'aider.

  2. #2
    Membre émérite
    Profil pro
    Inscrit en
    Janvier 2007
    Messages
    1 448
    Détails du profil
    Informations personnelles :
    Âge : 39
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Janvier 2007
    Messages : 1 448
    Points : 2 284
    Points
    2 284
    Par défaut
    salut, essais de demander ds le forum fb si il n'y à pas moyen de modifier le charset de la connexion. Sur mysql je dois faire cela pour travailler en utf-8 de bout en bout. a plus

  3. #3
    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
    Points : 44 155
    Points
    44 155
    Par défaut
    Les charSet non plus ne peuvent être en cause vu que je recopie exactement la requête du PHP dans le SGBD et qu'elle fonctionne...
    Quand tu copies/colles ca ne donne pas la meme chose que lorsque PHP envoi la chiane.
    Utilise utf8_decode ou utf8_encode selon ton cas.

  4. #4
    Membre habitué Avatar de sigap
    Inscrit en
    Avril 2002
    Messages
    113
    Détails du profil
    Informations forums :
    Inscription : Avril 2002
    Messages : 113
    Points : 166
    Points
    166
    Par défaut
    Tu dois pouvoir faire correspondre l'encodage BD et l'encodage de ta requete.
    Sabotage te l'a proposé, essaie la fonction utf8_encode lors de l'envoi de ta requete.

  5. #5
    Membre éclairé Avatar de peter27x
    Profil pro
    Inscrit en
    Janvier 2007
    Messages
    1 029
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2007
    Messages : 1 029
    Points : 757
    Points
    757
    Par défaut
    Citation Envoyé par sigap Voir le message
    Tu dois pouvoir faire correspondre l'encodage BD et l'encodage de ta requete.
    Sabotage te l'a proposé, essaie la fonction utf8_encode lors de l'envoi de ta requete.
    Bonjour,

    je lis vos réponses très instructives, je vais essayer tout cela.

    Je vous tiens au jus.

    Merci.

  6. #6
    Membre éclairé Avatar de peter27x
    Profil pro
    Inscrit en
    Janvier 2007
    Messages
    1 029
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2007
    Messages : 1 029
    Points : 757
    Points
    757
    Par défaut
    Bon désolé mais utf8_encode ou decode ne m'apporte hélas rien.

    Pour info j'ai dans ma base de données :
    Default character set : ISO8859_1

    Et côté page php:
    <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">

    Donc normalement ça roule non ? Enfin je veux dire "ça devrait" !

  7. #7
    Membre émérite
    Profil pro
    Inscrit en
    Janvier 2007
    Messages
    1 448
    Détails du profil
    Informations personnelles :
    Âge : 39
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Janvier 2007
    Messages : 1 448
    Points : 2 284
    Points
    2 284
    Par défaut
    url_decode ?

  8. #8
    Membre éclairé Avatar de peter27x
    Profil pro
    Inscrit en
    Janvier 2007
    Messages
    1 029
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2007
    Messages : 1 029
    Points : 757
    Points
    757
    Par défaut
    Citation Envoyé par kaymak Voir le message
    url_decode ?
    Hélas cela ne peut me servir vu que je ne code pas du côté du SGBD !

    Ma chaine est construite dans la page php, puis automatiquement envoyée au SGBD lors de la demande d'exécution de la requête:

    Si ça peut aider à trouver le pb:

    Fonction php de connection:
    @ibase_connect( $host, $name, $pass );

    Fonction php d'exécution:
    @ibase_query( $con, $rqt );


    Ca marche, sauf si présence d'accents dans la requête...

  9. #9
    Membre éclairé Avatar de peter27x
    Profil pro
    Inscrit en
    Janvier 2007
    Messages
    1 029
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2007
    Messages : 1 029
    Points : 757
    Points
    757
    Par défaut
    J'ai trouvé !!!

    il fallait faire:

    @ibase_connect( $host, $name, $pass, "ISO8859_1" )

    !!!


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

Discussions similaires

  1. [MySQL] Requête avec variable depuis php
    Par jaas dans le forum PHP & Base de données
    Réponses: 10
    Dernier message: 06/04/2009, 16h06
  2. [BDD] Comment Executer Une SP Mysql avec ADODB depuis PHP
    Par audreyc dans le forum SQL Procédural
    Réponses: 3
    Dernier message: 30/03/2006, 12h17
  3. lancer un .reg depuis php
    Par tikaprod dans le forum Langage
    Réponses: 14
    Dernier message: 17/02/2006, 11h02
  4. [CSV] Ecrire et Lire un fichier Excel depuis PHP
    Par cocaetjusdorange dans le forum Langage
    Réponses: 7
    Dernier message: 08/02/2006, 11h10

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