无法从mysql检索以填充表单

时间:2019-01-01 19:53:35

标签: php mysql debugging mysqli

我在从mysql数据库获取结果并将其转换为流行表单时遇到问题。基本上,我正在建立一个物品数据库,玩家可以在其中提交游戏中的物品详细信息并查看数据库以获取每个物品的信息。就将项目添加到数据库并查看数据库而言,我已完成所有工作。现在,我正在尝试对编辑项页面进行编码。我基本上已经从additem页面重新使用了表单,因此它显示的是相同的表单。在我的edititem页面的顶部,我有php代码,可以从网址中提取商品编号,因为商品编号是唯一的。因此,我正在使用准备好的语句来提取项目号,然后尝试从数据库中检索其余信息,然后将每个信息设置为变量。我的代码发生了什么事,但是我找不到任何错误。我输入了一些标头调用以通过将信息放入url栏进行调试...但是标头甚至没有在某些位置被调用并且没有出现任何错误。

在表单中,我使用了

<input name="itemname" type="text" value="<?php $edit_itemname?>"> 

,文本框中没有任何显示。我是php的新手,调试起来似乎比我使用过的其他语言要困难得多。关于调试的任何帮助或建议将不胜感激。如果你们看到任何错误,我也会在下面发布我的php代码...我不应该遇到这么简单的问题!我正在把头发拉出来。

谢谢大家!

<?php
require 'dbh.php';
if (!isset($_GET['itemnumber'])) {
  header("Location: itemdb.php");
  exit();
}else{

  $sql = "SELECT * FROM itemdb WHERE id = ?";
  $stmt = mysqli_stmt_init($conn);
  if (!mysqli_stmt_prepare($stmt, $sql)) {
    header("Location: edititem.php?error=sqlerror");
    exit();
  }else{
    $getid = $_GET['itemnumber'];
    mysqli_stmt_bind_param($stmt, "i", $getid);
    mysqli_stmt_execute($stmt);
    $result = mysqli_stmt_get_result($stmt);

    //Make sure an item is selected
    if ($result == 0) {
      $message = "You must select an item to edit!";
      header("Location: edititem.php?Noresults");
      exit();
    }else{
      while ($row = mysqli_fetch_assoc($stmt)) {
        $edit_itemname = $row['name'];
        $edit_itemkeywords = $row['type'];
        $edit_itemego = $row['ego'];
        $edit_itemweight = $row['weight'];
        $edit_itemacordmg = $row['acordmg'];
        $edit_itemtags = $row['tags'];
        $edit_itemworn = $row['worn'];
        $edit_itemaffects = $row['affects'];
        $edit_itemloads = $row['loads'];
        $edit_itemarea = $row['area'];
        $edit_itemcomments = $row['comments'];
          header("Location: edititem.php?testing");
      }
    }
  }

  }


 ?>

2 个答案:

答案 0 :(得分:1)

要使$edit_itemname的值进入输出,您应该使用<?=而不是<?php。说<?php将运行代码,因此基本上这只是其中包含变量的一行。您告诉它在变量中打印值。

如果您的整个行看起来像:

<input name="itemname" type="text" value="<?= $edit_itemname?>">

那应该给您您想要的东西。 <?=相当于说echo $edit_itemname;

如果您不喜欢使用<?=,也可以说

<input name="itemname" type="text" value="<?php echo $edit_itemname; ?>">

答案 1 :(得分:0)

您的代码应该更改为更易读的形式,并且应该添加输出-我不建议使用echo-并且您需要选择要对行进行的操作-也许<?=<input>-还是其他?

<table>