0

私は爆発して仕事をするのに問題があります。現在、コンマ 73、1、5 で区切られた複数のユーザー ID を持つ Attending という名前のテーブル フィールドがあります。ユーザー 73 を簡単にエコーアウトさせることができますが、残りは爆発させる必要があります。エコーアウトさせたいのです。これら 3 人のユーザーの各ユーザー名、またはそれが何人になっても。//でコメントアウトしたようなものかもしれないと思っていました

参加フィールドは利用者一覧 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 結果リソースではありません。

4

3 に答える 3

2

関数を介してテーブルSELECTを結合することにより、すべてを 1 つだけで行うことができます。2 番目のパラメーターとして指定された CSV 文字列の最初のパラメーターを検索するため、各イベントに参加したすべてのユーザーを取得できます。を追加して、特定のイベントをフィルタリングすることもできます。不要なデータ トラフィックを避けるために、* を必要なフィールドのみに置き換えることを忘れないでください。EventsUsersfind_in_set()find_in_set()WHERE

$Attending = array(); 
$Attending = mysql_query("
  SELECT * 
  FROM Events e
  INNER JOIN Users u ON find_in_set(u.UserId, e.Attending) 
");
于 2013-06-09T05:07:31.330 に答える