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