PHP echo变量在while循环外返回最后一个值
希望大家都有一个好的新年 我试图从循环中回显一个值,但它只返回for循环的最后一个值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=\"
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
});