gpt4 book ai didi

php - 在 PHP MySQL 中使用 UNION 创建消息系统

转载 作者:行者123 更新时间:2023-11-29 06:02:58 26 4
gpt4 key购买 nike

我正在尝试创建消息系统,我想在其中显示我向其发送消息或收到消息的用户列表。这样我就可以拥有与之交互的用户列表这是我的消息表结构

msgID   sentBy  sentTo  message     sentTime 
1 3 1 Hii B 1493306882
2 3 1 Hi A 1493309615
1 1 3 Hmm 1493306882
2 1 3 Yeah 1493309615

我试过的查询是

(SELECT * FROM user_message LEFT JOIN users ON user_message.sentTo=users.userID
WHERE user_message.sentBy='".$_SESSION['userid']."' GROUP BY sentTo) UNION

(SELECT * FROM user_message LEFT JOIN users ON user_message.sentBy=users.userID
WHERE user_message.sentTo='".$_SESSION['userid']."' GROUP BY sentBy)

问题:使用上面的查询,它会显示用户名以及我发送或接收消息的时间。

最佳答案

问题是您的个人选择查询选择了所有列,而只按一列分组。您可以通过仅选择您实际需要的列并将这些列添加到您的组子句来更正此问题。

此外,您可以将 distinct 添加到联合中,以便从两个返回的表中返回一组不同的结果。此外,您可以在选择查询中使用 distinct 而不是 group,但那是另一个讨论。

假设您的查询已经在执行您需要它执行的操作,您可以对您选择的字段和要分组的字段进行小的更改。我还加入了 union distinct

(SELECT users.userName FROM user_message LEFT JOIN users ON user_message.sentTo=users.userID
WHERE user_message.sentBy='".$_SESSION['userid']."' GROUP BY users.userName)

UNION DISTINCT

(SELECT users.userName FROM user_message LEFT JOIN users ON user_message.sentBy=users.userID
WHERE user_message.sentTo='".$_SESSION['userid']."' GROUP BY users.userName)

附带说明一下,我看到您将 $_SESSION['userid'] 直接放入您的查询中。确保此变量已针对 sql 注入(inject)进行了适当的清理!

关于php - 在 PHP MySQL 中使用 UNION 创建消息系统,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43664389/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com