爆炸多个用户ID

时间:2013-06-09 03:23:41

标签: php mysql

我在爆炸工作时遇到问题我有一个名为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结果资源。

3 个答案:

答案 0 :(得分:2)

您可以通过SELECT功能加入EventsUsers表,只需一个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'];
}