0

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

我需要所有电话号码(这是表'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 while循环之外时,它只会给我一个电话号码。当我进入echo $variabele while循环时,它会以正确的方式向我显示所有电话号码。有什么想法吗?

编辑

我看到的代码根本不起作用,所以这就是我想要的:它应该让所有电话号码用逗号分隔,放入变量或数组中。

编辑

谢谢大家,它的工作!但是......只有当所有 mysql_ 都是 mysql_ 时。当我将它们更改为 mysqli_ 时,没有任何反应......

4

4 回答 4

3

这就是阵列的设计目的

$variabele = array();
while($row = mysql_fetch_array($result))
  {
    if($row['leerling_nummer'] != '')
        $variabele[] = $row['leerling_nummer'];
  }
  echo implode(', ', $variabele);
于 2012-12-24T10:35:16.567 回答
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_ 函数已被弃用!

于 2012-12-24T10:57:28.847 回答
1

当您在while 循环中看到所有电话号码的原因是,在每次迭代(每次重新进入 while 循环时,可以这么说)您都在回显. 因此,看起来好像所有的东西都是一次完成的,而实际上它是一次完成的。echo "$variabele"; $variabeleechoecho

您可以通过将代码更改为:

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 Ba​​ker 已经提出的那样,或者您必须将每个新电话号码附加到$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 Ba​​ker 的解决方案实际上要简单得多。

最后,我想让你知道一个漂亮的 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 已经为您收集了所有内容。

于 2012-12-24T11:09:34.150 回答
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());
?>
于 2012-12-24T11:17:12.983 回答