我有一个以下结构的表格......
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 -
有人能看到我哪里出错吗?
答案 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)
想想在第一次迭代时你的循环会发生什么:
在第二轮中:
等等。
退出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;