-1
SELECT a.uid, a.name_f, a.name_l, b.position FROM users a, room_members b WHERE a.uid = b.userid AND b.room_id=$room_id

room_id に基づいて特定のユーザーの名前、uid、プロフィール写真、および位置を選択する上記のクエリがあり、クエリで返される位置に次の変数を動的に割り当てる while ループを返したいと考えています。

$position1_name_f
$position1_name_l
$position1_uid
$position1_pic

$position2_name_f
$position2_name_l
$position2_uid
$position2_pic

たとえば、返されたデータの中で位置 4 と位置 8 だけが返された場合、次の変数が返され、これらの変数をスクリプトで自由に使用できます。

$position4_name_f
$position4_name_l
$position4_uid
$position4_pic

$position8_name_f
$position8_name_l
$position8_uid
$position8_pic

最大で 10 の位置があります。サイトのレイアウトで変数を頻繁に使用し、単純な while ループ エコーを実行する方法がないため、これらの変数がどうしても必要です。そうでなければ、すべてがずっと簡単になります。

変数変数を使用してみました。また、カウンターをデプロイしようとしましたが、どちらも機能しませんでした。

次のクエリを開始しましたが、助けていただければ幸いです。ありがとう

$room_members=mysql_query("SELECT a.uid, a.name_f, a.name_l, b.position FROM users a, room_members b WHERE a.uid = b.userid AND b.room_id=$room_id");
while($members_sql=mysql_fetch_array($room_members))
{
//Need some dynamic variables here...
}
4

3 に答える 3

2

あなたはそれを間違っている !

それがarrays の目的です。

$result = array();

$result[1] = array('name_f' => 'data',
                   'name_l' => 'data',
                   etc,
                   );

あなたのコメントから:

しかし、ポジションが設定されたかどうか、または空に戻ったかどうかを確認するにはどうすればよいでしょうか? 私は基本的に必要です if (isset(position_1)) {show position_1_name_f}

if (isset($result[1])) {
    echo $result[1]['name_f'];
}

したがって、できることは次のとおりです。

$members = array();

$room_members = mysql_query("SELECT a.uid, a.name_f, a.name_l, b.position FROM users a, room_members b WHERE a.uid = b.userid AND b.room_id=$room_id");
while($members_sql=mysql_fetch_assoc($room_members)) {
    $members[] = $members_sql;
}
于 2012-04-18T18:57:28.927 に答える
1

次のように、変数名を文字列として作成できます。

$i = 1;
while($members_sql=mysql_fetch_array($room_members))
{
  $variablebase = 'position'.$i++.'_';
  $variablename = $variablebase.'name_f';
  $$variablename = $members_sql['name_f'];
}

この後、$positionX_name_f が宣言されます。

しかし、配列の方が優れたソリューションではないでしょうか?

于 2012-04-18T18:59:30.510 に答える
1

これに配列を使用したり、イテレータを実装したオブジェクトを使用したりしないのはなぜですか?

はるかに簡単なはずです:)

于 2012-04-18T18:56:59.173 に答える