【问题标题】:"mysqli::query(): Couldn't fetch mysqli" when using MySQL to populate multiple drop-down boxes on PHP/HTML form使用 MySQL 填充 PHP/HTML 表单上的多个下拉框时出现“mysqli::query(): Couldn't fetch mysqli”
【发布时间】:2021-07-18 19:03:16
【问题描述】:

我创建了一个带有下拉元素的表单,该元素读取 MySQL 表以填充选项,当它将表单数据写入不同的字段时,它会写入所选选项的行 ID。当我只使用一个元素时,它可以按预期工作,但是当我复制该元素时,它会引发以下错误:

状态
警告:mysqli::query():无法在第 202 行的 /var/www/jobtrak/register.php 中获取 mysqli
警告:main():无法在第 209 行的 /var/www/jobtrak/register.php 中获取 mysqli

用户类型
警告:mysqli::query():无法在第 217 行的 /var/www/jobtrak/register.php 中获取 mysqli
警告:main():无法在第 224 行的 /var/www/jobtrak/register.php 中获取 mysqli

这是这两个元素的 PHP/HTML 代码。第202行是第4行,209是第11行,217是第19行,224是第26行。

            <div class="form-group">
                <label>State</label>
                <?php
                    if($r_set1 = $link->query("SELECT * from state")){
                        echo "<select id=state name=state class=form-control style=width:150px>";
                        while ($row1 = $r_set1->fetch_assoc()) {
                            echo "<option value=$row1[id]>$row1[state]</option>";
                        }
                        echo "</select>";
                    }else{
                        echo $link->error;
                    }
                ?>
                <span class="invalid-feedback"><?php echo $state_err; ?></span>
            </div>
            <div class="form-group">
                <label>User Type</label>
                <?php
                    if($r_set2 = $link->query("SELECT * from usertype")){
                        echo "<select id=usertype name=usertype class=form-control style=width:150px>";
                        while ($row2 = $r_set2->fetch_assoc()) {
                            echo "<option value=$row2[id]>$row2[type]</option>";
                        }
                        echo "</select>";
                    }else{
                        echo $link->error;
                    }
                ?>
                <span class="invalid-feedback"><?php echo $usertype_err; ?></span>
            </div>

我看过here,但是我看不到它太早关闭连接,或者我只是完全失明,看不到它。

【问题讨论】:

  • 这里有一些合理的答案:stackoverflow.com/questions/19937880/…
  • @BillKarwin 那是我在原始问题中链接到的文章。
  • 抱歉,我没有检查。我会通过确保$link 是一个活动连接来调试您的代码。查询SELECT true什么的,检查error status
  • 没有骰子,$link 是活动连接,使用SELECT true 确认。仍然存在同样的问题。

标签: php html mysql mysqli


【解决方案1】:

尝试将 HTML 标记属性用引号“”括起来。和/或 $row1['id'], $row1['state']

例如。

<?php
    if($r_set1 = $link->query("SELECT * from state")){
        echo '<select id="state" name="state" class="form-control" style="width:150px">';
        while ($row1 = $r_set1->fetch_assoc()) {
            echo "<option value=\"$row1['id']\">$row1['state']</option>";
        }

【讨论】:

    猜你喜欢
    • 2016-09-14
    • 2018-03-12
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-02-15
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多