我有一个网页,显示照片($file)
,下面的每张照片是一个列表的用户谁'喜欢'每张照片。每个用户显示为一个html链接到他们的个人资料。目前,用户显示和链接的用户名:
<a href=\"profile.php?user_name=".$tag.">".$tag."</a>
但是我想知道如何显示用户的名字,同时使用他们的$user_id
链接到他们的个人资料。
<a href=\"profile.php?user_name=".$user_id.">".$tag."</a>
我在查询中使用了GROUP_CONCAT来获取所有user_id的($tag)
,这些($tag)
喜欢tbl_collab
中的每一张照片,然后在tbl_users
上连接这些结果以获取user_name
,但是我不知道如何在html链接中同时显示user_id和user_name。有人能告诉我如何做到这一点吗?
//Database Query
$sql="SELECT up.file,p.user_name,p.user_id, GROUP_CONCAT(cp.user_name)
FROM tbl_uploads up
LEFT JOIN tbl_users p ON up.user_id = p.user_id
LEFT JOIN tbl_collab c ON up.file = c.file
LEFT JOIN tbl_users cp ON cp.user_id = c.collab_userid
GROUP BY up.file";
$result = $mysqli->query($sql);
while($row = $result->fetch_array())
{
$user_id = explode (",", $row['user_id'] );
$user = explode (",", $row['user_name'] );
$files = explode (",", $row['file']);
$tag_array = explode(',' , $row['GROUP_CONCAT(cp.user_name)']);
foreach($files as $file) {
//File is displayed here
}
foreach($tag_array as $tag) {
//Links to the users who liked the file
<a href=\"profile.php?user_name=".$tag.">".$tag."</a>
}
}
3条答案
按热度按时间zi8p0yeb1#
在SQL中获取GROUP_CONCAT中两个值:
标签数组的foreach中:
GROUP_CONCAT
分隔符,因为“\n”的字符转义问题在这里很麻烦)*祝你好运!
3htmauhk2#
您不需要为此使用
GROUP_CONCAT
,只需执行一个普通的JOIN
并使用ORDER BY
将同一文件的所有行放在一起即可。tp5buhyn3#
MySQL有一个非常简单的方法来
GROUP_CONCAT
多个值根据我们的要求。在你的例子中,你需要做两件事
1.用户标识
1.用户名
那么你只需要试试这个:
之后,当您在PHP上访问这个
user
值时,您将收到如下所示的值:然后,根据您的要求,您可以使用
explode
方法分离这两个值,并使用以下命令获得阵列上的user_id
和user_name
:它会提供数组值,但是如果你需要
user_id
和user_name
,你会把它们传递给URL
,如下所示:https:://localhost/user_page/id/user_name
在这种情况下,您只需要像这样更改
GROUP_CONCAT
中的参数:希望能有所帮助。