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 :

SUBSTRING ou LEFT fonctionnent dans MySQL, pas dans PHP !?


Sujet :

PHP & Base de données

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Profil pro
    Inscrit en
    Mai 2006
    Messages
    33
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2006
    Messages : 33
    Par défaut SUBSTRING ou LEFT fonctionnent dans MySQL, pas dans PHP !?
    Salut

    Quand j’exécute cette requete sous MySQL ça fonctionne parfaitement en me renvoyant le bon résultat ('04-02') :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    SELECT id_res
    FROM resultats
    WHERE nom_res = 'des plaques de pellicules blanches'
    AND LEFT(id_res, 2) = (
      SELECT id_res
      FROM resultats
      WHERE nom_res = 'Peau sensible et déshydratée' )
    AND nom_diag = 'Diagnostic peau'
    ou, similaire, en remplaçant LEFT(id_res, 2) par SUBSTRING(id_res, 1, 2 )

    Pourtant, quand je l’exécute en PHP, même si ça ne me génère pas de code d'erreur, ça ne me renvoie pas pour autant le résultat que j'obtiens ds MySQL ??? Alors que mes autres requêtes fonctionne parfaitement...
    Code sql : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    $requete_sql = 
    "SELECT id_res
    FROM resultats
    WHERE nom_res = 'des plaques de pellicules blanches'
    AND SUBSTRING(id_res, 1, 2 ) = (
      SELECT id_res
      FROM resultats
      WHERE nom_res = 'Peau sensible et déshydratée' )
    AND nom_diag = 'Diagnostic peau'";
     
    $resultat_sql = mysql_query($requete_sql) or die ("la requete SQL xxxx a FAIL ! <br />Erreur : ".mysql_error());//execute la requete et sauvegarde le resultat
     
    $nb_produits_associé = mysql_num_rows($resultat_sql);
    dans PHP
    Code php : Sélectionner tout - Visualiser dans une fenêtre à part
    mysql_num_rows($resultat_sql)
    me renvoie 0

    merci d'avance

  2. #2
    Expert confirmé
    Homme Profil pro
    Inscrit en
    Mai 2002
    Messages
    3 173
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Rhône (Rhône Alpes)

    Informations forums :
    Inscription : Mai 2002
    Messages : 3 173
    Par défaut
    Bonjour,

    Votre problème est lié à votre applicatif vous avez peu de chance de trouver une réponse ici.

    Ceci-dit votre requete est problématique je penses.

    En effet votre sous-requête est susceptible de retourner plusieurs résultats car votre test ce fait sur un libellé.

    Du coup je changerai le = en un IN pour éviter ce plantage futur (ou passez par un exists)

    Code sql : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
     
    SELECT id_res
    FROM resultats
    WHERE nom_res = 'des plaques de pellicules blanches'
    AND LEFT(id_res, 2) IN (
      SELECT id_res
      FROM resultats
      WHERE nom_res = 'Peau sensible et déshydratée' )
    AND nom_diag = 'Diagnostic peau'

  3. #3
    Membre averti
    Profil pro
    Inscrit en
    Mai 2006
    Messages
    33
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2006
    Messages : 33
    Par défaut
    Merci

    Tu crois qu'il faut que je remonte d'un niveau mon sujet ?

    et pour le IN a la place du = , vu que cette partie de la BD ne sera modifié que rarement et donc manuellement, ce n'est pas la peine

  4. #4
    Expert éminent
    Avatar de CinePhil
    Homme Profil pro
    Ingénieur d'études en informatique
    Inscrit en
    Août 2006
    Messages
    16 815
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 62
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Ingénieur d'études en informatique
    Secteur : Enseignement

    Informations forums :
    Inscription : Août 2006
    Messages : 16 815
    Billets dans le blog
    14
    Par défaut
    Je trouve bizarre d'aller comparer un id_res à une partie d'un autre id_res, surtout dans la mesure où cet identifiant devrait être de type entier.

    Que donne une requête simple, par exemple si tu commentes tout le premier AND du WHERE, à la place de celle-ci ?
    Philippe Leménager. Ingénieur d'étude à l'École Nationale Supérieure de Formation de l'Enseignement Agricole, en retraite... mais toujours Autoentrepreneur à l'occasion.
    Mon ancien blog sur la conception des BDD, le langage SQL, le PHP... et mon nouveau blog sur les mêmes sujets.
    « Ce que l'on conçoit bien s'énonce clairement, et les mots pour le dire arrivent aisément ». (Nicolas Boileau)
    À la maison comme au bureau, j'utilise la suite Linux Mageïa !

  5. #5
    Membre averti
    Profil pro
    Inscrit en
    Mai 2006
    Messages
    33
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2006
    Messages : 33
    Par défaut
    En fait id_res (de la table résultat) est une chaîne, car des résultats ont aussi des sous résultats, donc id_res est un id hiérarchique incrémenté (je sais plus le nom exact que ça a)
    Structure de resultat :
    id_res
    nom_res
    libelle_res
    description_res
    logo_res
    #nom_diag
    extrait des données :
    01 Peau normale à mixte
    01-01 des tiraillements
    01-02 des plaques de pellicules blanches
    01-03 une peau rugueuse et granuleus
    02 Peau grasse
    02-01 des tiraillements
    etc
    et donc
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    SELECT id_res
    FROM resultats
    WHERE nom_res = 'des plaques de pellicules blanches'
    AND nom_diag = 'Diagnostic peau'
    me renvoie :
    id_res
    01-02
    02-02
    03-02
    04-02
    05-02
    Mais vu que ma requete fonctionne sous MySQL je ne pense pas que ça vienne de la requete en elle même, on dirait juste que le fait qu'il y ait un LEFT ou SUBSTRING, php me renvoie rien... :/

    et merci pour le déplacement

  6. #6
    Expert éminent
    Avatar de CinePhil
    Homme Profil pro
    Ingénieur d'études en informatique
    Inscrit en
    Août 2006
    Messages
    16 815
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 62
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Ingénieur d'études en informatique
    Secteur : Enseignement

    Informations forums :
    Inscription : Août 2006
    Messages : 16 815
    Billets dans le blog
    14
    Par défaut
    Qu'est sensée faire ta requête ?

    Petit jeu de données et résultat attendu aiderait à comprendre.
    Philippe Leménager. Ingénieur d'étude à l'École Nationale Supérieure de Formation de l'Enseignement Agricole, en retraite... mais toujours Autoentrepreneur à l'occasion.
    Mon ancien blog sur la conception des BDD, le langage SQL, le PHP... et mon nouveau blog sur les mêmes sujets.
    « Ce que l'on conçoit bien s'énonce clairement, et les mots pour le dire arrivent aisément ». (Nicolas Boileau)
    À la maison comme au bureau, j'utilise la suite Linux Mageïa !

Discussions similaires

  1. Jquery ne fonctionne pas dans une page ajax/php
    Par enamorada dans le forum jQuery
    Réponses: 11
    Dernier message: 13/03/2013, 09h44
  2. [2008] Email task fonctionne dans BIDS, pas dans SQL Agent (job)
    Par Tankian dans le forum SSIS
    Réponses: 0
    Dernier message: 15/06/2011, 18h01
  3. [MySQL] Numero de telephone ne s'inscrit pas dans mysql
    Par indiana81 dans le forum PHP & Base de données
    Réponses: 7
    Dernier message: 19/07/2010, 10h23
  4. balises dans MYSQL lecture dans Flash impossible pourquoi?
    Par tigerdidier dans le forum Dynamique
    Réponses: 1
    Dernier message: 19/09/2007, 12h01

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