【问题标题】:Obtaining data from database to display in a textbox从数据库中获取数据以显示在文本框中
【发布时间】:2023-03-04 18:57:01
【问题描述】:

伙计们。我无法从我的数据库中获取数据以便在文本框中显示它。它给了我一个错误,上面写着 Undefined variable: test on line 22

下面是我的 HTML 代码 sn-p 有错误

<tr>
    <td width="230">Item Name</td>
    <td width="10">:</td>
    <td width="294"><input id="item" name= "Item" type="text" class="resizedTextbox" value = "<?php echo $test['item'];?>" required></td>
</tr>

这是我的 php 代码 sn-p。

include("config.php");

if (isset($_GET['item_id']))
    {
    $sql = "SELECT * FROM inventory WHERE item_id  =" .$_GET['item_id'];
    $query = mysqli_query($db, $sql);
    $test = mysqli_fetch_array($query);
    }

我相信我没有任何语法错误,所以我不确定是什么导致了问题。提前致谢。

【问题讨论】:

  • 首先,您需要发布足够多的代码示例和有关您的数据库表结构的足够信息,以便我们诊断问题。这还不够。其次,您对SQL injection 持开放态度。您需要使用准备好的语句,而不是将变量连接到查询中。见How can I prevent SQL injection in PHP?
  • 为了清楚起见,您应该将完整的代码与行号放在一起。我建议按照 Ed 的说法对其进行修改。

标签: php html


【解决方案1】:

在 if 条件下打印 $test 并检查所有数据是否显示

【讨论】:

  • 欢迎来到 SO,这应该在 cmets 中不是答案。我知道您还没有评论权限,所以请不要创建这样的答案。唯一会发生的事情是社区会否决这些答案,这将使您的帐户无法提问。因此,最佳做法是等到您获得评论权并发布问题的实际答案以获得投票。
【解决方案2】:

你必须循环查询结果

while ($test = mysqli_fetch_array($query))
{    
    echo "<tr>";
    foreach ($test as $key => $value) { ?>
        <tr>
<td width="230">Item Name</td>
<td width="10">:</td>
<td width="294"><input id="item" name= "Item" type="text" class="resizedTextbox" value = "<?php echo $value['item'];?>" required></td>
</tr>
   <?php  }
    echo "</tr>";
}

【讨论】:

    【解决方案3】:

    首先 fetch_array 不会给你当前试图回显的关联数组。 ($test['item']),它将首先索引它。试试这个:

    $row = mysqli_fetch_assoc($result);
    

    循环然后使用数组的索引,就像你之前尝试做的那样

    阅读此处了解有关差异的更多信息: Mysqli fetch_assoc vs fetch_array

    http://php.net/manual/en/mysqli-result.fetch-assoc.php

    http://php.net/manual/en/mysqli-result.fetch-assoc.php

    【讨论】:

    • 我试过了,但当它被明确定义时,它仍然给我未定义的变量错误。
    【解决方案4】:

    请放弃使用mysqli,就像您使用它的方式不安全一样。如果你学会了这样使用它,那么那个人告诉你这样的代码应该被踢。大多数人使用mysqli 就像他们使用mysql 一样,他们需要了解社区为什么要推出改进版。

    如果您正在使用 mysqli,请将其与准备好的语句一起使用,通过您自己编写代码来停止使用它的安全漏洞。

    要回答你的问题试试这个, PHP

    include("config.php");
    
    if (isset($_GET['item_id'])){
      $sql = "SELECT * FROM inventory WHERE item_id  =?";
      $query = $db->prepare($sql);
      $query -> bind_param("i", $_GET['item_id'],PDO::PARAM_INT);
      $query -> execute();
      $getRow = $query -> fetch(PDO::FETCH_ASSOC);
    }
    

    HTML

    <tr>
     <td width="230">Item Name</td>
     <td width="10">:</td>
     <td width="294"><input id="item" name= "Item" type="text" class="resizedTextbox" value = "<?php echo $getRow['item'];?>" required></td>
    </tr>
    

    如果您要创建多个,则使用 while 循环循环获取数据。 PHP

    include("config.php");
    
    if (isset($_GET['item_id'])){
      $sql = "SELECT * FROM inventory WHERE item_id  =?";
      $query = $db->prepare($sql);
      $query -> bind_param("i", $_GET['item_id'],PDO::PARAM_INT);
      $query -> execute();  
    }
    

    HTML

    <?php while($getRow = $query -> fetch(PDO::FETCH_ASSOC);){?>
    <tr>
     <td width="230">Item Name</td>
     <td width="10">:</td>
     <td width="294"><input id="item" name= "Item" type="text" class="resizedTextbox" value = "<?php echo $getRow['item'];?>" required></td>
    </tr>
    <?php } ?>
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多