Php 将数据从函数打印到while循环中

Php 将数据从函数打印到while循环中,php,Php,我创建了一个从表中获取数据的函数 现在我想使用while循环将返回的数据打印到表中。 几乎一切正常,但当我调用该函数时,它将只打印第一行 $usr = $_SESSION['MM_UID']; function getData($leavetype,$eo, $usr) { $get = "SELECT * FROM `leaveregister` WHERE employee = '$usr' AND `leaveType`='$leavetype' "; $getdata =

我创建了一个从表中获取数据的函数

现在我想使用while循环将返回的数据打印到表中。
几乎一切正常,但当我调用该函数时,它将只打印第一行

$usr = $_SESSION['MM_UID'];
function getData($leavetype,$eo, $usr)
{
    $get = "SELECT * FROM `leaveregister` WHERE employee = '$usr' AND `leaveType`='$leavetype' ";
    $getdata = mysqli_query($eo, $get);
    while($geta = mysqli_fetch_assoc($getdata))
    {
        return($geta);
    }
}
echo '<strong>Annual Leaves</strong>';
echo '<table class="table basicTable"><thead><th>Leave Duration</th><th>Start Date</th><th>End Date</th></thead>';
echo '<tbody>';
$getb = getData('annual',$eo,$usr);
echo '<tr><td>'.$getb['leaveDays'].'</td><td>'.$getb['startDate'].'</td><td>'.$getb['endDate'].'</td><td>'.$getb['remarks'].'</td></tr>';

echo '<tr><strong></tr>';
echo '</tbody></table>';
$usr=$\u会话['MM\u UID'];
函数getData($leavetype、$eo、$usr)
{
$get=“从'leaveregister'中选择*,其中employee='$usr'和'leaveType`='$leaveType'”;
$getdata=mysqli_查询($eo,$get);
而($geta=mysqli\u fetch\u assoc($getdata))
{
报税表(港币);;
}
}
回声'一年生叶子'/strong>';
回显“休假持续时间开始日期结束日期”;
回声';
$getb=getData('年度',$eo,$usr);
回显'.$getb['leaveDays'].'.$getb['startDate'.'.'.'.$getb['endDate'.'.'.'.'.$getb['备注'.''.''.';
回声“”;
回声';

请注意:
$eo
是数据库连接。

尝试使用
foreach

 function getData($leavetype,$eo, $usr)
  {
    $get = "SELECT * FROM `leaveregister` WHERE employee = '$usr' AND `leaveType`='$leavetype' ";
    $getdata = mysqli_query($eo, $get);
     return $geta = mysqli_fetch_assoc($getdata))         
  }



$getb = getData('annual',$eo,$usr);
$table = '';
foreach($getb as $b){
  $table .='<tr><td>'.$b['leaveDays'].'</td><td>';
  $table .=$b['startDate'].'</td><td>'.$b['endDate'].'</td>';
  $table .='<td>'.$b['remarks'].'</td></tr>';

 }
 echo $table;
函数getData($leavetype、$eo、$usr) { $get=“从'leaveregister'中选择*,其中employee='$usr'和'leaveType`='$leaveType'”; $getdata=mysqli_查询($eo,$get); return$geta=mysqli\u fetch\u assoc($getdata)) } $getb=getData('年度',$eo,$usr); $table=''; foreach($getb为$b){ $table.=''.$b['leaveDays'].'; $table.=$b['startDate'].'.$b['endDate'].'; $table.=''.$b[“备注].'; } echo$表; 问题就在这里

    while($geta = mysqli_fetch_assoc($getdata))
        {
            return($geta); 
        }
        //return here enter code here

尝试收集某些数据结构(例如数组)中的所有数据,并在最后一次迭代后返回变量

您可以在循环时使用
:
以下是示例代码:

$usr = $_SESSION['MM_UID'];
function getData($leavetype,$eo, $usr)
{
    $get = "SELECT * FROM `leaveregister` WHERE employee = '$usr' AND `leaveType`='$leavetype' ";
    $getdata = mysqli_query($eo, $get);
    return($getdata);
}
echo '<strong>Annual Leaves</strong>';
echo '<table class="table basicTable"><thead><th>Leave Duration</th><th>Start Date</th><th>End Date</th></thead>';
echo '<tbody>';
$getc = getData('annual',$eo,$usr);
while($getb = mysqli_fetch_assoc($getc)){
    echo '<tr><td>'.$getb['leaveDays'].'</td><td>'.$getb['startDate'].'</td><td>'.$getb['endDate'].'</td><td>'.$getb['remarks'].'</td></tr>';
}

echo '<tr><strong></tr>';
echo '</tbody></table>';
$usr=$\u会话['MM\u UID'];
函数getData($leavetype、$eo、$usr)
{
$get=“从'leaveregister'中选择*,其中employee='$usr'和'leaveType`='$leaveType'”;
$getdata=mysqli_查询($eo,$get);
返回($getdata);
}
回声'一年生叶子'/strong>';
回显“休假持续时间开始日期结束日期”;
回声';
$getc=getData('年度',$eo,$usr);
而($getb=mysqli\u fetch\u assoc($getc)){
回显'.$getb['leaveDays'].'.$getb['startDate'.'.'.'.$getb['endDate'.'.'.'.'.$getb['备注'.''.''.';
}
回声“”;
回声';

问题在于
getData
返回单个结果。让我们解决这个问题:

function getData($leavetype,$eo, $usr)
{
    $get = "SELECT * FROM `leaveregister` WHERE employee = '$usr' AND `leaveType`='$leavetype' ";
    $getdata = mysqli_query($eo, $get);
    $result = array();
    while($geta = mysqli_fetch_assoc($getdata))
    {
        $result[] = $geta;
    }
    return $result;
}
现在,您可以调用它并在其中循环以填充表

$results = getData('annual',$eo,$usr);
?>
<strong>Annual Leaves</strong>
<table class="table basicTable">
    <thead>
       <th>Leave Duration</th>
       <th>Start Date</th>
       <th>End Date</th>
    </thead>
    <tbody>

<?php foreach($results as $getb) {
    echo '<tr><td>'.$getb['leaveDays'].'</td><td>'.$getb['startDate'].'</td>
    <td>'.$getb['endDate'].'</td><td>'.$getb['remarks'].'</td></tr>';
}
echo '<tr><strong></tr>';
echo '</tbody></table>';
?>
$results=getData('annual',$eo,$usr);
?>
一年生树叶
休假期限
开始日期
结束日期

返回结果时不检索所有数据。改变你的while语句,你的问题就会解决

$get = "SELECT * FROM `leaveregister` WHERE employee = '$usr' AND `leaveType`='$leavetype' ";
$result = array();
$getdata = mysqli_query($eo, $get);
while($geta = mysqli_fetch_assoc($getdata))
{
    $result[] = $geta;
}
return $result;

我该怎么办?