PHP echo变量在while循环外返回最后一个值

PHP echo变量在while循环外返回最后一个值,php,while-loop,echo,Php,While Loop,Echo,希望大家都有一个好的新年 我试图从循环中回显一个值,但它只返回for循环的最后一个值 while ($row = $stmt->fetch_assoc()) { echo "<tr>"; echo "<td>" . $row['id'] . "</td>"; echo "<td><button type=\"button\" class=\"btn btn-info btn-sm\" data-toggle=\"

希望大家都有一个好的新年

我试图从循环中回显一个值,但它只返回for循环的最后一个值

while ($row = $stmt->fetch_assoc()) {
    echo "<tr>";
    echo "<td>" . $row['id'] . "</td>";
    echo "<td><button type=\"button\" class=\"btn btn-info btn-sm\" data-toggle=\"modal\" data-target=\"#modal-username\">Username</button></td>";
    echo "<td>" . $row['password'] . "</td>"; // Don't worry the password is hashed
    echo "<td>" . $row['email'] . "</td>";
    echo "<td>" . $row['admin'] . "</td>";
    echo "</tr>";

    // Assign variables to use out of loop
    $id = $row['id'];
    $username = $row['username'];
    $password = $row['password'];
    $email = $row['email'];
    $admin = $row['admin'];
}
在我的模态体上是

<div class="modal-body">
    <p><?php echo $username; ?></p>
</div>
我尝试过使用。=而不是=,但这只是将所有用户名连接在一起

我知道这可能是一个简单的修复方法,并尝试过在变量赋值部分循环,但它只返回0

提前感谢

$username是一个变量,它只能保留一个值 如果您想保留所有用户名,那么应该使用数组 比如:

$id=$username=$password=$email=$admin=Array(); 

while ($row = $stmt->fetch_assoc()) {
    // Assign variables to use out of loop
    $id[] = $row['id'];
    $username[] = $row['username'];
    $password[] = $row['password'];
    $email[] = $row['email'];
    $admin[] = $row['admin'];
}

echo $username[0];// first username
echo $email[1];// second email
更新 您可以对查询结果进行如下限制:

如果要获取一些没有固定长度的数据:

或者在while循环之后,您可以使用for循环

或者更短一些:

while ($row = $stmt->fetch_assoc()) {
    $username = $username ?: $row['username'];
}
echo $username;// first only

这就是我在这种情况下所做的

更改循环按钮

并将模式更改为

jquery代码

$('body').on("click", '.modal-trigger', function() {
    var GetUname = $(this).attr('data-uname');
    console.log('Selected Username: ' + GetUname);
    $('#uname-select').html(GetUname); // load the <p> tag with username selected
    $('.modal').modal(); // Make Modal & Show
});

试一试..

@Rain只是想强调一下,该列仅用于测试将行回传到表中的情况,因此它不会包含在最终部分。哪个用户名应该在模式中?数据库中的第一个用户名,但是我尝试了所有按钮,结果相同。你应该在问题中澄清这一点。我不是,我试图显示所有的用户,这样我就可以使用modals来编辑他们,然后按钮会显示用户名为inHi的modals,我不知道有多少行,因为数据库可能正在扩展,等等。当你不知道有多少行时,有没有办法实现这一点?你可以在数据库查询中限制结果,也可以设置顺序,尽管你可能想获取一些没有固定长度的数据,我会更新答案
for ( $i=0; $i<count($username); $i++){

    echo $username[$i].'<br>';

}
while ($row = $stmt->fetch_assoc()) {
    if(!isset($username)){
        $username = $row['username'];
    }
}
echo $username;// first only
while ($row = $stmt->fetch_assoc()) {
    $username = $username ?: $row['username'];
}
echo $username;// first only
while ($row = $stmt->fetch_assoc()) {
    echo "<tr>";
    echo "<td>" . $row['id'] . "</td>";
    echo "<td><button type=\"button\" class=\"btn btn-info btn-sm modal-trigger\" data-uname='" .  $row['username'] . "'>Username</button></td>";
    echo "<td>" . $row['password'] . "</td>"; // Don't worry the password is hashed
    echo "<td>" . $row['email'] . "</td>";
    echo "<td>" . $row['admin'] . "</td>";
    echo "</tr>";
}
<div class="modal-body">
    <p id="uname-select"></p>
</div>
$('body').on("click", '.modal-trigger', function() {
    var GetUname = $(this).attr('data-uname');
    console.log('Selected Username: ' + GetUname);
    $('#uname-select').html(GetUname); // load the <p> tag with username selected
    $('.modal').modal(); // Make Modal & Show
});