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 MySQLi sur clé primaire [MySQL]


Sujet :

PHP & Base de données

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éclairé
    Profil pro
    Inscrit en
    Février 2008
    Messages
    314
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2008
    Messages : 314
    Par défaut Requête MySQLi sur clé primaire
    Bonjour,

    Je lance une requête sur une clé primaire composée de 2 champs:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    $Requête = "SELECT * FROM Adresses WHERE Table_ = $Table_
                                               AND Identifiant = $Identifiant";
    $Résultat = mysqli_query($Connexion, $Requête);
    Aucun résultat.
    Par contre, si je supprime Table_ = $Table_ l'opération s'effectue, ce qui n'est pas vrai quand je fais l'inverse.

    ? Comment fait-on.

    Merci

    Cordialement.

  2. #2
    Membre éclairé Avatar de JmL40
    Profil pro
    Inscrit en
    Mai 2007
    Messages
    348
    Détails du profil
    Informations personnelles :
    Âge : 39
    Localisation : France

    Informations forums :
    Inscription : Mai 2007
    Messages : 348
    Par défaut
    Bonjour,

    En testant comme ceci :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    $Requete = 'SELECT * FROM Adresses 
    WHERE Table_ = "'.$Table.'" AND Identifiant = "'.$Identifiant.'"';
    $Resultat = mysqli_query($Connexion, $Requete);
    Je propose cette syntaxe après il se peut que le problème viennent de votre connexion à la base de données, voir autres mais il me parait plus judicieux de tester cette syntaxe avant.

    Cordialement

  3. #3
    Membre éclairé
    Profil pro
    Inscrit en
    Février 2008
    Messages
    314
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2008
    Messages : 314
    Par défaut
    J'ai testé dans tous les sens et cela ne fonctionne toujours pas.

    C'est seulement quand je retire Table_Origine = '".$Table_Origine."' que cela fonctionne.

    J'ai changé le nom, par doute que Table_ avec underscore posait problème.

    Merci.

    Cordialement.

  4. #4
    Membre Expert
    Profil pro
    Inscrit en
    Avril 2006
    Messages
    1 349
    Détails du profil
    Informations personnelles :
    Âge : 39
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations forums :
    Inscription : Avril 2006
    Messages : 1 349
    Par défaut
    c'est possible d'avoir la structure de la table

  5. #5
    Membre éclairé Avatar de JmL40
    Profil pro
    Inscrit en
    Mai 2007
    Messages
    348
    Détails du profil
    Informations personnelles :
    Âge : 39
    Localisation : France

    Informations forums :
    Inscription : Mai 2007
    Messages : 348
    Par défaut
    C'est seulement quand je retire Table_Origine = '".$Table_Origine."' que cela fonctionne.
    Attention, quand vous parlez de $Table_Origine, cela ne fait par référence à une table de votre base de données ?

    Car une clause where ne peut prendre en compte une egalite entre deux tables mais uniquement entre deux champs d'une ou deux table :

    Exemple :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    $reqiete = 'SELECT * FROM table WHERE table.champ = "'.mavariable.'"';
    Cordialement

  6. #6
    Membre éclairé
    Profil pro
    Inscrit en
    Février 2008
    Messages
    314
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2008
    Messages : 314
    Par défaut
    Voici la structure de la table et la requête:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
     
    CREATE TABLE Adresses
    (Table_Origine      VARCHAR(25) NOT NULL,
     Identifiant        INTEGER(9),
     Adresse_Courrielle VARCHAR(75),
     Adresse_Type       VARCHAR(4) NOT NULL,
     Adresse            VARCHAR(100) NOT NULL,
     Adresse_Complement VARCHAR(100),
     Adresse_Supplement VARCHAR(100),
     Code_Postal        INTEGER(25) NOT NULL,
     Ville              VARCHAR(75) NOT NULL,
     Pays               VARCHAR(50) NOT NULL,
     PRIMARY KEY(Table_Origine,Identifiant)
    );
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
     
    $Requête = "SELECT * FROM Adresses WHERE Table_Origine = '".$Table_Origine."'
                                     AND Identifiant   = '".$Identifiant."'";
    Cordialement.

  7. #7
    Membre éclairé
    Profil pro
    Inscrit en
    Février 2008
    Messages
    314
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2008
    Messages : 314
    Par défaut
    Compléments:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
          echo "Table_Origine = $Table_Origine <br/>";
          echo "Identifiant = $Identifiant <br/>";
    Résultat:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    Table_Origine = Personnes_Physiques 
    Identifiant = 1
    DBD:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    Table_Origine: Personnes_Physiques
    Identifiant: 1
    Cordialement.

  8. #8
    Membre Expert
    Profil pro
    Inscrit en
    Avril 2006
    Messages
    1 349
    Détails du profil
    Informations personnelles :
    Âge : 39
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations forums :
    Inscription : Avril 2006
    Messages : 1 349
    Par défaut
    fait un echo $requete

    et teste la sous une console sql

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

Discussions similaires

  1. Passage du type integer vers varchar sur clé primaire
    Par GMI dans le forum Bases de données
    Réponses: 2
    Dernier message: 07/01/2005, 09h09
  2. Encore une requête complexe sur plusieurs tables
    Par DenPro dans le forum Langage SQL
    Réponses: 5
    Dernier message: 09/12/2003, 19h05
  3. Requête complexe sur plusieurs table
    Par DenPro dans le forum Langage SQL
    Réponses: 13
    Dernier message: 25/11/2003, 17h50
  4. recherche enr dans table sur clé primaire
    Par access001 dans le forum Requêtes
    Réponses: 10
    Dernier message: 10/10/2003, 10h45
  5. A propos d'une requête SQL sur plusieurs tables...
    Par ylebihan dans le forum Langage SQL
    Réponses: 2
    Dernier message: 14/09/2003, 16h26

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