Mysql 从查询中调用默认图像时,为每个用户获取唯一图像

Mysql 从查询中调用默认图像时,为每个用户获取唯一图像,mysql,sql,Mysql,Sql,对不起,标题太长了。 我有一个注册用户列表,一些有个人资料图片,一些没有。 问题在于用户1是否已登录。然后在用户列表中,每个人都具有与用户1相同的配置文件图像 但是如果我从查询中删除默认调用者,每个用户都会得到自己的图片,但是default.jpg图像不起作用。 我可以删除查询并在页面上使用if语句,但我确实希望避免这种情况 函数fetch_users$uid{ $query=$this->link->query选择user.id、user.username、user.email、, userd

对不起,标题太长了。 我有一个注册用户列表,一些有个人资料图片,一些没有。 问题在于用户1是否已登录。然后在用户列表中,每个人都具有与用户1相同的配置文件图像

但是如果我从查询中删除默认调用者,每个用户都会得到自己的图片,但是default.jpg图像不起作用。 我可以删除查询并在页面上使用if语句,但我确实希望避免这种情况

函数fetch_users$uid{ $query=$this->link->query选择user.id、user.username、user.email、, userdetails.profile\u img,userdetails.firstname, userdetails.lastname,userdetails.location,following.follow\u id 来自用户 左连接user.id上的userdetails=userdetails.user\u id 在user.id=following.following\u id上左连接following 其中user.id!='{$uid}'; $users=数组; 而$row=$query->fetchPDO::FETCH_ASSOC!==FALSE{ 弄乱事情的行-->$row['profile\u img']=file\u existsimg/{$uid}.jpg?img/{$uid}.jpg:img/default.jpg; $users[]=$row; } 返回$users; }
你混合了很多东西。在查询中,您从表中获取文件名,但在注释行中,您使用uid构造名称。对于前者,您可以使用

选择… 如果nulluserdetails.profile\u img,img/default.jpg作为profile\u img, … 这将用默认映像的路径替换表中的空值

如果要从用户ID构造图像路径,则应使用结果行中的ID,而不是当前用户的ID:

而$row=$query->fetchPDO::FETCH_ASSOC!==假{ $imgpath=img/$row['id']..jpg; 如果!file_存在$imgpath$imgpath=img/default.jpg; $row['profile\u img']=$imgpath; $users[]=$row; } 这将基于用户id创建图像路径,如果不存在这样的文件,则返回默认路径

您甚至可以将两者结合起来:

选择… 如果nulluserdetails.profile\u img, CONCATimg/,user.id,.jpg作为profile\u img, … 而$row=$query->fetchPDO::FETCH_ASSOC!==假{ 如果!文件\u存在$row['profile\u img'] $row['profile_img']=img/default.jpg; $users[]=$row; }
这将使用已设置的存储映像路径,否则将使用从uid构造的路径。然后,它将使用以这种方式命名的文件,但如果不存在这样的文件,则使用默认值。

如此漂亮的解决方案:,经过一些调整后效果很好!真不错。非常感谢。