当您在while 循环中看到所有电话号码的原因是,在每次迭代(每次重新进入 while 循环时,可以这么说)您都在回显. 因此,看起来好像所有的东西都是一次完成的,而实际上它是一次完成的。echo "$variabele";
$variabele
echo
echo
您可以通过将代码更改为:
while($row = mysql_fetch_array($result))
{
$variabele = $row['leerling_nummer'] . ",";
echo "$variabele" . " | ";
}
现在,您将看到结果不是(如我所料):
0612345637,061231823,061231723, |
... 但:
0612345637, | 061231823, | 061231723, |
如果你认为正在发生的事情,真的发生了,那么结果实际上是这样的:
0612345637, | 0612345637, 061231823, | 0612345637, 061231823, 061231723, |
如果您想在一个变量中收集所有电话号码,您确实最好使用数组,正如Mark Baker 已经提出的那样,或者您必须将每个新电话号码附加到$variabele
字符串中,如下所示:
// initiate $variabele as an empty string
$variabele = "";
while($row = mysql_fetch_array($result))
{
// append the new phone number to $variabele (note .= in stead of =)
$variabele .= $row['leerling_nummer'] . ",";
}
echo $variabele;
唯一的问题是你必须删除最后一个逗号。有多种方法可以做到这一点,或者规避这一点,但 Mark Baker 的解决方案实际上要简单得多。
最后,我想让你知道一个漂亮的 MySQL 函数,它可以让你轻松地连接列的值;这就是功能GROUP_CONCAT()
。但是,这在您当前的情况下可能没有用,因为您也在获取其他列。但为了将来参考,如果您只需要一列想用逗号将它们连接起来,您可以这样做:
SELECT GROUP_CONCAT( leerling_nummer ) AS leerling_nummers
FROM leerlingen
WHERE klas_id='$aan_klas'
GROUP BY klas_id
在查询数据库然后执行$row = mysql_fetch_array($result);
所有数字之后,所有数字都会在 中$row['leerling_nummers']
,用逗号分隔,因为GROUP_CONCAT()
使用逗号作为默认分隔符。换句话说:您不再需要使用 PHP 循环遍历行;MySQL 已经为您收集了所有内容。