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 :

Une requête donne un résultat différent dans PHP [MySQL]


Sujet :

PHP & Base de données

  1. #1
    Membre expérimenté
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Avril 2003
    Messages
    1 303
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Seine Saint Denis (Île de France)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : Service public

    Informations forums :
    Inscription : Avril 2003
    Messages : 1 303
    Points : 1 380
    Points
    1 380
    Par défaut Une requête donne un résultat différent dans PHP
    Bonjour,

    la requête suivante ne donne pas le même résultat quand elle est exécutée par PHP 5.0.5 ou dans Toad for MySQL. La requête est générée mais ce qui suit est le SQL généré et lancé par la fonction mysql_query (je sais cette fonction et la version de PHP sont obsolètes mais je n'ai pas le choix).

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    drop table if exists tmpNrssListe;
    CREATE TABLE tmpNrssListe  
    select nrss, numfichier as fic , numFichier as tactext_fu, null as targu_fu, null as tdivact_fu, null as tdivdas_fu, null as trsaact_fu, null as trsadas_fu, null as trsafix_fu, null as trsardth_fu, null as trsaum_fu, null as trssact_fu, null as trssdad_fu, null as trssdas_fu, null as trssfix_fu from tactext_fu where numFichier is not null 
    union
    select nrss, numfichier as fic , null as tactext_fu, numFichier as targu_fu, null as tdivact_fu, null as tdivdas_fu, null as trsaact_fu, null as trsadas_fu, null as trsafix_fu, null as trsardth_fu, null as trsaum_fu, null as trssact_fu, null as trssdad_fu, null as trssdas_fu, null as trssfix_fu from targu_fu where numFichier is not null 
    union
    select nrss, numfichier as fic , null as tactext_fu, null as targu_fu, numFichier as tdivact_fu, null as tdivdas_fu, null as trsaact_fu, null as trsadas_fu, null as trsafix_fu, null as trsardth_fu, null as trsaum_fu, null as trssact_fu, null as trssdad_fu, null as trssdas_fu, null as trssfix_fu from tdivact_fu where numFichier is not null 
    union
    select nrss, numfichier as fic , null as tactext_fu, null as targu_fu, null as tdivact_fu, numFichier as tdivdas_fu, null as trsaact_fu, null as trsadas_fu, null as trsafix_fu, null as trsardth_fu, null as trsaum_fu, null as trssact_fu, null as trssdad_fu, null as trssdas_fu, null as trssfix_fu from tdivdas_fu where numFichier is not null 
    union
    select nrss, numfichier as fic , null as tactext_fu, null as targu_fu, null as tdivact_fu, null as tdivdas_fu, numFichier as trsaact_fu, null as trsadas_fu, null as trsafix_fu, null as trsardth_fu, null as trsaum_fu, null as trssact_fu, null as trssdad_fu, null as trssdas_fu, null as trssfix_fu from trsaact_fu where numFichier is not null 
    union
    select nrss, numfichier as fic , null as tactext_fu, null as targu_fu, null as tdivact_fu, null as tdivdas_fu, null as trsaact_fu, numFichier as trsadas_fu, null as trsafix_fu, null as trsardth_fu, null as trsaum_fu, null as trssact_fu, null as trssdad_fu, null as trssdas_fu, null as trssfix_fu from trsadas_fu where numFichier is not null 
    union
    select nrss, numfichier as fic , null as tactext_fu, null as targu_fu, null as tdivact_fu, null as tdivdas_fu, null as trsaact_fu, null as trsadas_fu, numFichier as trsafix_fu, null as trsardth_fu, null as trsaum_fu, null as trssact_fu, null as trssdad_fu, null as trssdas_fu, null as trssfix_fu from trsafix_fu where numFichier is not null 
    union
    select nrss, numfichier as fic , null as tactext_fu, null as targu_fu, null as tdivact_fu, null as tdivdas_fu, null as trsaact_fu, null as trsadas_fu, null as trsafix_fu, numFichier as trsardth_fu, null as trsaum_fu, null as trssact_fu, null as trssdad_fu, null as trssdas_fu, null as trssfix_fu from trsardth_fu where numFichier is not null 
    union
    select nrss, numfichier as fic , null as tactext_fu, null as targu_fu, null as tdivact_fu, null as tdivdas_fu, null as trsaact_fu, null as trsadas_fu, null as trsafix_fu, null as trsardth_fu, numFichier as trsaum_fu, null as trssact_fu, null as trssdad_fu, null as trssdas_fu, null as trssfix_fu from trsaum_fu where numFichier is not null 
    union
    select nrss, numfichier as fic , null as tactext_fu, null as targu_fu, null as tdivact_fu, null as tdivdas_fu, null as trsaact_fu, null as trsadas_fu, null as trsafix_fu, null as trsardth_fu, null as trsaum_fu, numFichier as trssact_fu, null as trssdad_fu, null as trssdas_fu, null as trssfix_fu from trssact_fu where numFichier is not null 
    union
    select nrss, numfichier as fic , null as tactext_fu, null as targu_fu, null as tdivact_fu, null as tdivdas_fu, null as trsaact_fu, null as trsadas_fu, null as trsafix_fu, null as trsardth_fu, null as trsaum_fu, null as trssact_fu, numFichier as trssdad_fu, null as trssdas_fu, null as trssfix_fu from trssdad_fu where numFichier is not null 
    union
    select nrss, numfichier as fic , null as tactext_fu, null as targu_fu, null as tdivact_fu, null as tdivdas_fu, null as trsaact_fu, null as trsadas_fu, null as trsafix_fu, null as trsardth_fu, null as trsaum_fu, null as trssact_fu, null as trssdad_fu, numFichier as trssdas_fu, null as trssfix_fu from trssdas_fu where numFichier is not null 
    union
    select nrss, numfichier as fic , null as tactext_fu, null as targu_fu, null as tdivact_fu, null as tdivdas_fu, null as trsaact_fu, null as trsadas_fu, null as trsafix_fu, null as trsardth_fu, null as trsaum_fu, null as trssact_fu, null as trssdad_fu, null as trssdas_fu, numFichier as trssfix_fu from trssfix_fu where numFichier is not null 
    order by nrss, fic;
    Exemples de résultat différent (pour le RSS n° 5) :
    PHP (résultat erroné) :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    nrss	fic	tactext_fu	targu_fu	tdivact_fu	tdivdas_fu	trsaact_fu	trsadas_fu	trsafix_fu	trsardth_fu	trsaum_fu	trssact_fu	trssdad_fu	trssdas_fu	trssfix_fu
    5	1																										1
    5	2																										2
    Toad (résultat correct) :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    nrss	fic	tactext_fu	targu_fu	tdivact_fu	tdivdas_fu	trsaact_fu	trsadas_fu	trsafix_fu	trsardth_fu	trsaum_fu	trssact_fu	trssdad_fu	trssdas_fu	trssfix_fu
    5	1																										1
    La table trssfix_fu ne contient qu'une ligne avec le NRSS 5 (et cette dernière à un numFichier égal à 1).
    J'ai essayé en faisant un "create table" suivit d'un "insert into ... select" mais le résultat est le même.
    Christophe

    Pensez à mettre quand c'est le cas.

  2. #2
    Invité
    Invité(e)
    Par défaut
    Bonjour,

    Bon.

    et quel est ton souhait :
    • consulter les astres avec Madame Soleil ?
    • ou tirer les cartes avec Madame Irma ?
    • ou embrasser un crapaud*, pour voir s'il se transforme en princesse ?




    Parce que là........

    N.B. on peut aussi te jouer un air de flute, mais je ne suis pas sûr que ça aide...





    * ("toad", en anglais, pour ceux qui n'auraient pas compris cette bonne blague )

  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
    La table trssfix_fu ne contient qu'une ligne avec le NRSS 5 (et cette dernière à un numFichier égal à 1).
    Et les autres ?
    N'oubliez pas de consulter les FAQ PHP et les cours et tutoriels PHP

  4. #4
    Membre expérimenté
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Avril 2003
    Messages
    1 303
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Seine Saint Denis (Île de France)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : Service public

    Informations forums :
    Inscription : Avril 2003
    Messages : 1 303
    Points : 1 380
    Points
    1 380
    Par défaut
    Cette requête me permet de regrouper sur une ligne le contenu dispersé dans plusieurs lignes (cf. http://www.developpez.net/forums/d15...-seul-fichier/).
    Je souhaite obtenir, en PHP, le résultat donné dans Toad qui est correct (comme indiqué).

    Dans l'exemple donné, le problème semble provenir de la table trssfix_fu. La requête en PHP sort 1 et 2 pour cette colonne alors que cette table ne contient que 1.
    Les autres tables peuvent contenir, 1 ou 2 ou (1 et 2) mais pour le NRSS 5 il n'y a que 1 ou rien.
    Christophe

    Pensez à mettre quand c'est le cas.

  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
    Points : 44 155
    Points
    44 155
    Par défaut
    Tu as executé chaque requête individuellement pour voir ?
    N'oubliez pas de consulter les FAQ PHP et les cours et tutoriels PHP

  6. #6
    Membre expérimenté
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Avril 2003
    Messages
    1 303
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Seine Saint Denis (Île de France)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : Service public

    Informations forums :
    Inscription : Avril 2003
    Messages : 1 303
    Points : 1 380
    Points
    1 380
    Par défaut
    Je viens d'exécuter dans une page PHP de test :
    - chaque requête individuellement pour le NRSS 5 : OK
    - chaque requête individuellement pour tous les NRSS : OK
    - l'union des requêtes pour le NRSS 5 : OK
    - l'union des requêtes pour tous les NRSS : OK
    - la création de la table avec l'union des requêtes pour le NRSS 5 : KO
    - la création de la table avec l'union des requêtes pour tous les NRSS : KO

    Le problème semble donc venir de la création de la table mais je ne vois pas ce qui cloche.
    Christophe

    Pensez à mettre quand c'est le cas.

  7. #7
    Modératrice
    Avatar de Celira
    Femme Profil pro
    Développeuse PHP/Java
    Inscrit en
    Avril 2007
    Messages
    8 633
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 39
    Localisation : France

    Informations professionnelles :
    Activité : Développeuse PHP/Java
    Secteur : Industrie

    Informations forums :
    Inscription : Avril 2007
    Messages : 8 633
    Points : 16 372
    Points
    16 372
    Par défaut
    Et si au lieu de détruire la table pour la recréer, tu gardais la table et tu te contentais de la vider et de recréer les lignes dedans ?
    Modératrice PHP
    Aucun navigateur ne propose d'extension boule-de-cristal : postez votre code et vos messages d'erreurs. (Rappel : "ça ne marche pas" n'est pas un message d'erreur)
    Cherchez un peu avant poser votre question : Cours et Tutoriels PHP - FAQ PHP - PDO une soupe et au lit !.

    Affichez votre code en couleurs : [CODE=php][/CODE] (bouton # de l'éditeur) et [C=php][/C]

  8. #8
    Membre expérimenté
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Avril 2003
    Messages
    1 303
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Seine Saint Denis (Île de France)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : Service public

    Informations forums :
    Inscription : Avril 2003
    Messages : 1 303
    Points : 1 380
    Points
    1 380
    Par défaut
    Ne pas supprimer la table donne le même résultat mais dans Toad aussi et du coup, maintenant, seulement les select donne un résultat de trop dans Toad !
    Ca devrait être plus facile maintenant de trouver d'où vient le problème.
    Christophe

    Pensez à mettre quand c'est le cas.

  9. #9
    Membre expérimenté
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Avril 2003
    Messages
    1 303
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Seine Saint Denis (Île de France)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : Service public

    Informations forums :
    Inscription : Avril 2003
    Messages : 1 303
    Points : 1 380
    Points
    1 380
    Par défaut
    Je viens de voir que la suppression des doublons était mal placée (après ma requête) et que donc les tables utilisées dans la requête étaient modifiées après !
    Désolé de vous avoir dérangé pour ça, et merci à tous.
    Christophe

    Pensez à mettre quand c'est le cas.

  10. #10
    Invité
    Invité(e)
    Par défaut
    Finalement...

    ...un petit air de flute ?

  11. #11
    Membre expérimenté
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Avril 2003
    Messages
    1 303
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Seine Saint Denis (Île de France)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : Service public

    Informations forums :
    Inscription : Avril 2003
    Messages : 1 303
    Points : 1 380
    Points
    1 380
    Par défaut
    Oui mais vos remarques m'ont quand même aidé à trouver d'où venait le problème.
    Christophe

    Pensez à mettre quand c'est le cas.

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

Discussions similaires

  1. Réponses: 1
    Dernier message: 20/04/2015, 10h41
  2. [AC-2010] Requête donne des résultats différents
    Par elnyo dans le forum Access
    Réponses: 2
    Dernier message: 06/05/2014, 14h01
  3. [MySQL] Requête retourne un résultat vide dans PHP, OK dans PhpMyAdmin
    Par Lomic dans le forum PHP & Base de données
    Réponses: 10
    Dernier message: 10/01/2014, 18h00
  4. Réponses: 2
    Dernier message: 24/07/2013, 22h47
  5. Une requête et 2 résultats différents
    Par user_oracle dans le forum SQL
    Réponses: 5
    Dernier message: 18/01/2010, 13h52

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