J'ai deux bases de données, où je stocke qui suit qui et une autre qui stocke les publications de l'utilisateur.
Je souhaite sélectionner toutes les personnes qu'un utilisateur suit dans la base de données suivante et rappeler les noms d'utilisateur de ceux que cet utilisateur suit et interroger la base de données des publications pour connaître les publications de cet utilisateur.
Mon problème est ce qui se passe si un utilisateur suit plusieurs utilisateurs, Je me suis fait l'écho de l'ID utilisateur des personnes que cet utilisateur suit et je reçois 44443344330
Quand je sépare chaque identifiant avec commans, j'obtiens:
44,44,33,44,33,0,
alors donnons à cela une variable de $user_ids
;
$user_ids = "44,44,33,44,33,0, ";
la requête:
$get_posts = mysql_query("SELECT * FROM posts WHERE userid = '$user_ids'");
mais tout ce qu'il fait est de montrer les enregistrements du premier identifiant d'utilisateur, 44.
Comment puis-je récupérer tous les enregistrements pour tous les utilisateurs?
La requête devrait être:
SELECT * FROM posts WHERE userid IN (44,44,33,44,33,0)
Cependant, vous devrez peut-être repenser votre modèle de données et vous assurer qu'il est normalisé afin de pouvoir exprimer cette construction directement dans la base de données sans faire écho dans une chaîne séparée par des virgules.
Pourquoi avez-vous deux bases de données ? Voulez-vous dire deux tables ?
Peut-être que vous voulez utiliser IN
SELECT * FROM posts WHERE userid IN ($user_ids)
En supposant que vous avez deux tabels , pas des bases de données, et que la table (appelons-la "amis") qui décrit qui suit qui ressemble à
table friends(
userid
friendid
)
puis requête pour obtenir les messages postés par les amis de X serait
SELECT
p.*
FROM posts p
JOIN friends f ON(p.userid = f.friendid)
WHERE f.userid = X
$get_posts = mysql_query("SELECT * FROM posts WHERE userid in '($user_ids)'");