Php 下拉列表仅出现在表的第一行中
这是我的疑问:Php 下拉列表仅出现在表的第一行中,php,forms,html-table,dropdown,Php,Forms,Html Table,Dropdown,这是我的疑问: $sql = "SELECT * FROM employee"; $query = "SELECT * FROM employeerole ORDER BY role_id"; $result = mysqli_query($link, $sql); $result1 = mysqli_query($link, $query); <?php while ($row = mysqli_fetch_array($result, MYSQLI_ASSOC)) {
$sql = "SELECT * FROM employee";
$query = "SELECT * FROM employeerole ORDER BY role_id";
$result = mysqli_query($link, $sql);
$result1 = mysqli_query($link, $query);
<?php
while ($row = mysqli_fetch_array($result, MYSQLI_ASSOC)) {
?>
<tr>
<td><?php echo $row["id"]; ?></td>
<td><?php echo $row["first_name"]; ?></td>
<td><?php echo $row["last_name"]; ?></td>
<td><?php echo $row["username"]; ?></td>
<td><?php echo $row["role"]; ?></td>
<td>
$sql=“选择*来自员工”;
$query=“按角色\u id从employeerole订单中选择*”;
$result=mysqli\u查询($link,$sql);
$result1=mysqli\u查询($link,$query);
这是我的代码,在表格单元格中包含一个下拉框,但是,下拉框中的数据只显示在表格的第一行(如下面的屏幕截图所示)
这和环路有关吗
问题是,结果集$result1
在第一行本身中耗尽。您必须调整结果指针,使其指向结果集的开头,以便可以再次遍历它。为此,请使用mysqli\u data\u seek()
函数
添加此行mysqli\u data\u seek($result1,0)代码>就在这一行之后..“this.form.submit()”>
行
因此,您的代码应该如下所示:
// your code
<form action ="change.php">
<select id="role" class="" onchange="this.form.submit()">
<?php
mysqli_data_seek($result1, 0);
while ($line = mysqli_fetch_array($result1, MYSQLI_ASSOC)) {
?>
<option value="<?php echo $line['role_id']; ?>"><?php echo $line['role_name']; ?></option>
<?php } ?>
</select>
</form>
</td>
<td><input type="button" onclick="ConfirmDelete()" value="Delete account"</td>
</tr>
<?php } ?>
// your code
//您的代码
mysqli_fetch_数组已到达末尾,下一个循环将不会有下一个循环。你需要将数据保存到一个数组中,然后循环多次。可能重复@FirstOne他们在MYSQLI\u ASSOC
中使用了MYSQLI\u fetch\u数组($result,MYSQLI\u ASSOC)
我感觉他们使用了一个没有显示的限制。不过我可能错了。@Fred ii-第二个代码似乎在顶部代码的循环中。这意味着它在结束后多次调用fetch,对吗?@FirstOne可能是。但是这是失败的mysqli\u fetch\u数组($result1,MYSQL\u ASSOC)
缺少I
。它应该读作MYSQLI\u ASSOC
。OP正在混合API,这可能是原因。你没有读过,对吗^^@第一个哦,那是我的QLI协会的一部分。修好了。
// your code
<form action ="change.php">
<select id="role" class="" onchange="this.form.submit()">
<?php
mysqli_data_seek($result1, 0);
while ($line = mysqli_fetch_array($result1, MYSQLI_ASSOC)) {
?>
<option value="<?php echo $line['role_id']; ?>"><?php echo $line['role_name']; ?></option>
<?php } ?>
</select>
</form>
</td>
<td><input type="button" onclick="ConfirmDelete()" value="Delete account"</td>
</tr>
<?php } ?>
// your code