从变量中的mysql行获取所有数据

时间:2012-12-24 10:33:31

标签: php mysql while-loop

我被困在一些小事上,希望你能帮助我..

我需要所有电话号码(这是表'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_时,没有任何反应......

4 个答案:

答案 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 Ba​​ker的解决方案实际上要简单得多。

最后,我想让您了解一个漂亮的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());
?>