基于sql查询在while循环中动态创建变量

时间:2012-04-18 18:54:26

标签: php mysql variables

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,profile pic和某个用户的位置,我想返回一个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...
}

3 个答案:

答案 0 :(得分:2)

你做错了!

这就是array的用途:

$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;
}

答案 1 :(得分:1)

为什么不为这个或使用实现迭代器的对象使用数组?

应该更容易:)

答案 2 :(得分:1)

您可以将变量名称构建为String,如下所示:

$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之后。

但阵列不是更好的解决方案吗?