爆炸数组并指定为变量

时间:2011-07-07 08:18:59

标签: php mysql

我有一个以下结构的表格......

ID     USER_ID      INTEREST
1      290          soccer
2      290          tennis
3      290          badminton
4      560          netball

我想从用户id等于会话用户ID的表中获取所有值,并将它们指定为变量。

我有以下工作,但显示数据非常特别..

$interestsquery  = "SELECT * FROM user_interests WHERE user_id = " . $usersClass->userID();
$result = mysql_query($interestsquery);

while($row = mysql_fetch_array($result, MYSQL_ASSOC))
{
 $interests[] = $row['interest'];
 $interest1 = $interests[1];
 $interest2 = $interests[2];
 $interest3 = $interests[3];

 print $interest1 . " - " . $interest2 . " - " . $interest3;

} 

然而,上述内容会产生......

- - tennis - - tennis - badminton - 

有人能看到我哪里出错吗?

3 个答案:

答案 0 :(得分:2)

这应该做你需要的:

$interestsquery  = "SELECT `interest` FROM `user_interests` WHERE `user_id` = " . $usersClass->userID();
$result = mysql_query($interestsquery);

$interests = array();
while(list($interest) = mysql_fetch_array($result))
    $interests[] = $interest;

print explode($interests, ' - ');

答案 1 :(得分:1)

想想在第一次迭代时你的循环会发生什么:

  • $ interest是一个空数组
  • 您获取第一个值并将其放入$ interest [0],
  • 你用$ interest [1](它是空的)
  • 填充$ interest1
  • 同样适用于$ interest2和$ interest3
  • 你打印“”。“ - ”。“”。“ - ”。“”

在第二轮中:

  • $ interest是[0 =>足球]
  • 您获取第二个值并将其置于$ interest [1],
  • 你用$ interest [1] tennis
  • 中的值填充$ interest1
  • 同样为$ interest2和$ interest3(仍为空)
  • 你打印“网球”。“ - ”。“”。“ - ”。“”

等等。

退出while循环时需要打印结果(并且代码仍有缺陷 它不会将值放入数组的索引0中。

另一种选择应该是:

$interestsquery  = "SELECT `interest` FROM `user_interests` WHERE `user_id` = " 
                 . $usersClass->userID();
$result = mysql_query($interestsquery);

$interests = array();
// you fetch just a field, fetch_row will be sufficent
while($interest = mysql_fetch_row($result)) {
    array_push($interests, $interest[0]);
}
echo implode(' - ', $interests);

答案 2 :(得分:0)

$interests = array();

while($row = mysql_fetch_array($result, MYSQL_ASSOC))
{
  $interests[] = $row['interest'];
}

$int_count = count($interests);
$i=0;

foreach ($interests as $interest) {
    $var = 'interest' . ($i + 1);
    $$var = $interest;
    $i++;
} 

print $interest1 . " - " . $interest2 . " - " . $interest3;