MySQL colonne de données retournés comme une liste délimitée par des virgules
Actuellement j'ai une table MySQL comme:
id | friend
1 | 2
1 | 5
1 | 10
3 | 6
15 | 19
21 | 4
Je suis en train de récupérer tout l'ami de l'id d'un utilisateur en particulier et de les organiser en une liste délimitée par des virgules. Par exemple, s'emparant du user1 amis, il serait de retour que
$friend_list = 2,5,10
Actuellement, j'ai:
$sql = "SELECT friend FROM table__friends WHERE id = ".$user_id;
Ce ne récupère une ligne mais..s'il vous plaît aider!
Grâce
- Je suis assez fortement contre
GROUP_CONCAT
- il se sent comme la mauvaise utilisation d'un moteur de base de données pour moi. - Je ne sais pas pourquoi, aucune mise en garde de la part de la MySQL gens, ainsi, la question a été marqué MySQL, pas de PHP. -À chacun son propre ami, viens de dire 🙂
- Je suppose que c'est parce que les opérations de base de données devraient pas manipuler et retourner les tables de données - ils ne devraient pas traiter avec des "faux" types de données comme une chaîne séparée par des virgules, donc c'est une mauvaise "odeur de code" pour moi. Toutes les fois que vous avez une liste délimitée par des virgules, vous devriez probablement juste de le laisser dans les lignes ou un tableau à la place. Voici un bon exemple des problèmes que vous pouvez rencontrer: stackoverflow.com/questions/6643656/...
- La juste réponse, même si je suis en désaccord. En demandant au moteur de base de données pour revenir à un format que je préfère a peu à voir avec la structure ou de la normalisation.
Vous devez vous connecter pour publier un commentaire.
Vous souhaitez utiliser GROUP_CONCAT :
Ajusté pour l'exactitude par la meilleure réponse.
Votre requête renvoie plusieurs lignes - on dirait que vous êtes seulement à la lecture de la première ligne. Vous voulez quelque chose comme ceci à la place:
Post le code PHP que vous utilisez pour exécuter la requête et nous allons être en mesure d'aider plus.
Un couple de notes:
mysql_real_escape_string
fonction. La désinfection de vos entrées de l'utilisateur de cette manière est crucial pour éviter L'injection SQL attaques.Vous êtes probablement à la recherche pour
GROUP_CONCAT(column)
fonction. Exemples ici et ici.J'ai utilisé une Variable appelée @a, pour stocker l'id, à la fin vous avez les valeurs de la variable ou de l'essayer
avec une limite, d'un groupe de commande, comme ceci:
Dans votre cas de changement de la "condition"
ou vous pouvez aussi, après les sélectionner: