我被困在一些小事上,希望你能帮助我..
我需要所有电话号码(这是表'leerlingen'中的一列)在这里,逗号是分开的,所以我可以在另一个脚本中插入它,它显示所有电话号码,如下所示:
0612345637,061231823,061231723
代码:
$result = mysql_query("SELECT * FROM leerlingen
WHERE klas_id='$aan_klas'");
while($row = mysql_fetch_array($result))
{
$variabele = $row['leerling_nummer'] . ",";
echo "$variabele";
}
但是,当我echo $variabele
OUTSIDE while循环时,它只给我一个电话号码。
当我echo $variabele
INSIDE while循环时,它会以正确的方式向我显示所有电话号码..有任何想法吗?
修改
我的代码根本无法工作,所以这就是我想要的:它应该用逗号分隔所有的电话号码,放入变量或数组。
修改
谢谢你们,这是工作!但是......只有当mysql_的东西是mysql_时。当我把它们改成mysqli_时,没有任何反应......
答案 0 :(得分:3)
这是为
设计的数组$variabele = array();
while($row = mysql_fetch_array($result))
{
if($row['leerling_nummer'] != '')
$variabele[] = $row['leerling_nummer'];
}
echo implode(', ', $variabele);
答案 1 :(得分:1)
使用连接:
$result = mysql_query("SELECT * FROM leerlingen WHERE klas_id='$aan_klas'");
$variabele="";
while($row = mysql_fetch_array($result))
{
$variabele .= $row['leerling_nummer'] . ",";
}
echo "VAR: $variabele";
除此之外,请考虑使用msqli_或PDO,因为不推荐使用mysql_函数!
答案 2 :(得分:1)
当你在{/ 1}} 内部 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, |
如果你想收集一个变量中的所有电话号码,你最好使用一个数组,如Mark Baker already proposed,或,你必须附加每个新手机数字到0612345637, | 0612345637, 061231823, | 0612345637, 061231823, 061231723, |
字符串,如下所示:
$variabele
唯一的问题是,你必须删除最后一个逗号。有多种方法可以做到这一点,或者绕过这一点,但Mark Baker的解决方案实际上要简单得多。
最后,我想让您了解一个漂亮的MySQL函数,它允许您轻松地连接列的值;这是函数// 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;
。但是,这在您当前的情况下可能没有用,因为您也在获取其他列。但是为了将来参考,如果你只需要一个列想用逗号连接它们,你可以这样做:
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']
使用逗号作为默认分隔符。换句话说:你不再需要用PHP循环遍历行了; MySQL已经为你收集了一行中的所有内容。
答案 3 :(得分:0)
根据评论,似乎无法使用mysqli
。
这是一个mysqli
解决方案:
<?php
$result = mysqli_query($link, "SELECT * FROM leerlingen WHERE klas_id='$aan_klas'");
$variabele = "";
while($row = mysqli_fetch_array($result))
{
if($row['leerling_nummer']){
$variabele .= $row['leerling_nummer'] . ",";
}
}
echo rtrim($variabele, ',');
?>
mysqli_query()
期望第一个参数是从mysqli_connect()
返回的链接资源。
<?php
$mysqlserver = "localhost";
$mysqlusername = "root";
$mysqlpassword = "";
$link = mysqli_connect(localhost, $mysqlusername, $mysqlpassword) or die ("Error connecting to mysql server: ".mysqli_error());
?>