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...
}
答案 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之后。
但阵列不是更好的解决方案吗?