-1
votes

Utilisez Résultat dans la requête

hi im essayant de montrer le nom de groupe sur mon site, mais je n'ai pas du mal à connecter les deux requêtes. La classe d'utilisateurs est dans la table des utilisateurs tandis que le nom du groupe est dans la table du groupe.

ive a réussi à afficher le numéro d'utilisateur de la classe à partir de la table utilisateur, j'ai juste besoin d'ajouter une deuxième requête maintenant pour tirer des groupes le nom du groupe.

Ceci fonctionne pour le numéro de classe d'utilisateurs xxx

de sorte qu'il serait xxx


0 commentaires

3 Réponses :


2
votes

J'essaierais de rejoindre les tables et de sélectionner le résultat souhaité dans 1 requête directement. Quelque chose comme ceci: xxx

Vous pouvez également le faire dans 2 requêtes, mais dans votre pièce de 2e code, votre 2e requête prend $ RES3 comme argument. $ res3 n'est pas une chaîne ce qui est la raison pour laquelle votre RES4 $ RES4 .. Ligne ne donne pas le résultat souhaité. Vous devez d'abord obtenir la chaîne de résultat ($ groupe), puis l'utiliser dans votre deuxième requête.


0 commentaires

0
votes

obsolète s'il vous plaît utiliser rejoindre ( dans les requêtes MySQL Pourquoi utiliser une jointure au lieu d'où? )

Comme @shadol dit que vous pouvez combiner directement les 2 requêtes. Mais je le ferais comme ceci: xxx


3 commentaires

Bonne idée, mais en utilisant une syntaxe de jointure moderne appropriée serait meilleure


Chaque fois que vous voyez un "où" dans votre requête soit conscient qu'il existe une meilleure solution en utilisant "Rejoindre"


Ok ton droit. Je n'ai jamais utilisé la syntaxe de jointure (je viens d'avoir SQL en 10. Classe ...) Donc, mon SQL est peut-être un peu obsolète ....



0
votes

Ce n'est pas la bonne approche. Vous devriez faire une seule requête qui rejoint les tables de l'utilisateur et de groupe. Vous obtenez donc les données que vous avez besoin dans votre ensemble de résultats avec une seule requête.

Votre question ne fournit pas d'informations importantes comme la structure de vos tables, donc je avoir à faire une supposition éduquée. Les hypothèses que j'ai dû faire:

  • users.class est la clé étrangère pour groupes.group_id
  • groupes.Level est en fait le "nom du groupe"

    juste comme un côté qui est très déroutant (re) nommer d'une clé étrangère. Il n'est utile que quiconque tente de déterminer les relations entre vos tables pour utiliser un nom complètement différent ("classe") lorsque vous auriez pu nommer la colonne GROUP_ID.

    pour obtenir ce Dans une requête: xxx

    le primaire à emporter pour que vous devriez être ceci:

    Vous bénéficierez d'étudier la conception de la base de données relationnelle / la normalisation de la base de données et la manière dont vous joignez des tables ensemble.

    En outre, quelle que soit la classe de base de données que vous utilisez est désuée et vous ouvre jusqu'à présent injection SQL et vous échappera. .

    Vous ne devez pas utiliser l'interpolation de chaîne pour les requêtes, mais plutôt, vous devez utiliser des paramètres et des déclarations préparées. La façon dont vous êtes


2 commentaires

Merci pour la réponse, je vais lire sur l'utilisation de Join pour les tables. Pouvez-vous me signaler dans la bonne direction sur la façon dont j'aimerais empêcher l'injection SQL sur un site PHP


Mon conseil sincère très opinionné est d'utiliser PDO. Lire ce manuel non officiel et vous serez un expert en PDO avec un minimum de temps / effort. Si vous vous sentez plus à l'aise avec une classe de base de données qui enveloppe PDO, j'avais alors recommandé le Composant DBAL de la doctrine ORM , qui peut être utilisé essentiellement de la même manière que vous utilisez la classe que vous avez maintenant.