Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/59.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 从变量中的mysql行获取所有数据_Php_Mysql_While Loop - Fatal编程技术网

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

Php 从变量中的mysql行获取所有数据,php,mysql,while-loop,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))

我有点小麻烦,希望你能帮我

我需要所有的电话号码(这是“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的时候。当我将它们更改为mysqli_389;时,什么都不会发生…

这就是阵列的设计目的

$variabele = array();
while($row = mysql_fetch_array($result))
  {
    if($row['leerling_nummer'] != '')
        $variabele[] = $row['leerling_nummer'];
  }
  echo implode(', ', $variabele);

这就是阵列的设计目的

$variabele = array();
while($row = mysql_fetch_array($result))
  {
    if($row['leerling_nummer'] != '')
        $variabele[] = $row['leerling_nummer'];
  }
  echo implode(', ', $variabele);
使用串联:

$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";

除此之外,请考虑使用MQLILI或PDO,因为MySQL函数被弃用! 使用连接:

$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";

除此之外,请考虑使用MQLILI或PDO,因为MySQL函数被弃用! 当您

回显“$variabele”时,您看到所有电话号码的原因while循环中,是因为在每次迭代中(可以说,每次重新输入while循环时),您都在回显
$variabele
的最后一个值。因此,它看起来好像所有的东西都是一次回声,而实际上它是一次一个回声

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

while($row = mysql_fetch_array($result))
{
    $variabele = $row['leerling_nummer'] . ",";
    echo "$variabele" . " | ";
}
现在,您将看到结果不是(正如我认为您预期的):

0612345637061231823061231723,|

。。。但是:

0612345637、| 061231823、| 061231723、|

如果你认为正在发生的事情,真的发生了,那么结果实际上是这样的:

0612345637,| 0612345637,061231823,| 0612345637,061231823,061231723,|

如果要在一个变量中收集所有电话号码,最好使用数组,例如,必须将每个新电话号码附加到
$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;
唯一的问题是,你必须删除最后一个逗号。有多种方法可以做到这一点,或者绕过这一点,但马克·贝克的解决方案实际上要简单得多

最后,我想让您了解一个漂亮的MySQL函数,它允许您轻松地连接列的值;这是函数
GROUP\u CONCAT()
。但是,这在您当前的情况下可能没有用处,因为您也在获取其他列。但为了便于将来参考,如果您只需要一列,并且希望用逗号将它们连接起来,则可以执行以下操作:

SELECT GROUP_CONCAT( leerling_nummer ) AS leerling_nummers
FROM leerlingen
WHERE klas_id='$aan_klas'
GROUP BY klas_id

查询数据库后,执行
$row=mysql\u fetch\u array($result)所有数字将位于
$行['leerling\u numers']
,用逗号分隔,因为
GROUP\u CONCAT()
使用逗号作为默认分隔符。换句话说:您不再需要使用PHP循环行;MySQL已经为您收集了一行中的所有内容。

当您
回显“$variabele”时,您看到所有电话号码的原因是什么while循环中,是因为在每次迭代中(可以说,每次重新输入while循环时),您都在回显
$variabele
的最后一个值。因此,它看起来好像所有的东西都是一次回声,而实际上它是一次一个回声

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

while($row = mysql_fetch_array($result))
{
    $variabele = $row['leerling_nummer'] . ",";
    echo "$variabele" . " | ";
}
现在,您将看到结果不是(正如我认为您预期的):

0612345637061231823061231723,|

。。。但是:

0612345637、| 061231823、| 061231723、|

如果你认为正在发生的事情,真的发生了,那么结果实际上是这样的:

0612345637,| 0612345637,061231823,| 0612345637,061231823,061231723,|

如果要在一个变量中收集所有电话号码,最好使用数组,例如,必须将每个新电话号码附加到
$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;
唯一的问题是,你必须删除最后一个逗号。有多种方法可以做到这一点,或者绕过这一点,但马克·贝克的解决方案实际上要简单得多

最后,我想让您了解一个漂亮的MySQL函数,它允许您轻松地连接列的值;这是函数
GROUP\u CONCAT()
。但是,这在您当前的情况下可能没有用处,因为您也在获取其他列。但为了便于将来参考,如果您只需要一列,并且希望用逗号将它们连接起来,则可以执行以下操作:

SELECT GROUP_CONCAT( leerling_nummer ) AS leerling_nummers
FROM leerlingen
WHERE klas_id='$aan_klas'
GROUP BY klas_id

查询数据库后,执行
$row=mysql\u fetch\u array($result)所有数字将位于
$行['leerling\u numers']
,用逗号分隔,因为
GROUP\u CONCAT()
使用逗号作为默认分隔符。换句话说:您不再需要使用PHP循环行;MySQL已经为您收集了一行中的所有内容。

根据评论,它似乎不适用于
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
。 下面是一个
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, ',');
?>

不要使用mysql_*语句,它们已经过时了。更喜欢使用mysqli_*或PDO。mysqli_*在php的进一步版本中已被弃用,需要使用PDO对象或mysqli_*以便每次,$variabele将仅具有最新的电话号码。因为,它会被覆盖。简德