我在爆炸工作时遇到问题我有一个名为Attending的表字段,其中多个用户ID用逗号分隔73,1,5现在我可以很容易地让用户73回显但其他人需要爆炸,我想要它回显出这三个用户的每个用户名,或者最终结果是多少。我在想它可能就像我用//
评论的那样Attending Field是用户列表 http://imageshack.us/a/img38/1425/eventsne.jpg
一旦我得到用户名工作不好,尝试回复这样的头像和表格 http://imageshack.us/a/img819/8210/events2d.jpg
$Attending1 = array();
$Attending1 = mysql_query("SELECT * FROM Events, Users WHERE Events.Attending = Users.UserId");
//$AttendingUserIds = $Attending1['Attending'];
//$AttendingExploded = explode(",", $AttendingUserIds);
//$Attending3 = array();
//$Attending3 = mysql_query("SELECT * FROM Events, Users WHERE $AttendingExploded = Users.UserId");
while ($Attending2 = mysql_fetch_array($Attending1)) {
echo $Attending2['username'];
}
刚试过KyleK第3条建议
$Attending1 = array();
$Attending1 = mysql_query("SELECT * FROM Events, Users WHERE Events.Attending = Users.UserId");
$AttendingUserIds = $Attending1['Attending'];
//$AttendingExploded = explode(",", $AttendingUserIds);
$Attending3 = array();
$Attending3 = mysql_query("SELECT * FROM Events, Users WHERE Users.UserId IN ($AttendingUserIds)");
它给了我警告:mysql_fetch_array():提供的参数不是While启动时的有效MySQL结果资源。
答案 0 :(得分:2)
您可以通过SELECT
功能加入Events
和Users
表,只需一个find_in_set()
即可完成所有操作。这样,您将获得参加每个活动的所有用户,因为find_in_set()
将查找作为第二个参数提供的CSV字符串中的第一个参数。您可能还想添加WHERE
来过滤特定事件。并且不要忘记仅使用您需要的字段替换*,以避免不必要的数据流量:
$Attending = array();
$Attending = mysql_query("
SELECT *
FROM Events e
INNER JOIN Users u ON find_in_set(u.UserId, e.Attending)
");
答案 1 :(得分:1)
$Attending1 = mysql_query("SELECT * FROM Events, Users WHERE Events.Attending = Users.UserId");
while ($Attending2 = mysql_fetch_assoc($Attending1)) {
$arr[] = $Attending2['username'];
}
mysql_query
没有为您提供数组fetch_array
(或fetch_assoc
)。
它的结果与此类似:$arr[0]['username'], $arr[1]['username'], $arr[2]['username']
等。我不知道你想怎么“爆炸”所以我无法回答,但在fetch_assoc
之后你应该得到一个数组
答案 2 :(得分:0)
因此,如果我理解正确,您可以在字符串中使用逗号分隔“73,3,5”。 那么就这样使用WHERE IN
您从数据库中获取的一系列值,但是您会得到它......
$stringofids = "73,3,3";//You will obviously retrieve these from database
然后只需将该字符串传递给另一个查询,并使用WHERE IN语句... 这将返回所有参加的用户的数组。
$AttendingUsers = mysql_query("SELECT * FROM Events, Users WHERE Users.UserId IN ($stringofids)");
while ($Attending = mysql_fetch_array($AttendingUsers)) {
echo $Attending['username'];
}