【问题标题】:Form not displaying in PHP [duplicate]表单未在 PHP 中显示 [重复]
【发布时间】:2014-02-15 07:00:48
【问题描述】:

所以我有一个使用 PHP 和 MySQL 查询的页面。我想要做的基本上是创建一个“编辑”页面,该页面从我的数据库中获取数据并使用它来显示各种输入中的值。然后,用户可以更改输入中的数据,然后更新相应的 MySQL 表行。但是,无论出于何种原因,页面都没有显示表单,而是滚动到 else 语句。我可以验证 $_SESSION['weaponName'] 是否正常工作,因为它会回显正确的内容。关于为什么表单不会显示给我的任何想法?

edit.php

   <?php
session_start();

$con=mysqli_connect("localhost","username","password","db_name");
// Check connection
if (mysqli_connect_errno())
  {
  echo "Failed to connect to MySQL: " . mysqli_connect_error();
  }

$weaponName = $_SESSION['weaponName'];

$query = mysqli_query($con, "SELECT * FROM weapons limit 1");

if(mysqli_num_rows($query)>=1){
while($row = mysqli_fetch_array($query)) {
    $creator= $row['creator'];
    $weaponCategory= $row['weaponCategory'];
    $weaponSubCategory= $row['weaponSubCategory'];
    $costAmount= $row['costAmount'];
    $costType= $row['costType'];
    $damageS= $row['damageS'];
    $damageM= $row['damageM'];
    $critical= $row['critical'];
    $rangeIncrement= $row['rangeIncrement'];
    $weight= $row['weight'];
    $weaponType= $row['weaponType'];
    $masterwork= $row['masterwork'];
    $attributes= $row['attributes'];
    $specialAbilities= $row['specialAbilities'];
    $additionalInfo= $row['additionalInfo'];
}

?>

<form action="weaponEditUpdate.php" method="post">
    <input type="hidden" name="weaponName" value="<?php echo $weaponName;?>">

    Weapon Name: <input type="text" name="weaponName" value="<?php echo $weaponName;?>">
    <br>
    Weapon Category: <select name="weaponCategory">
    <?php while ($row = mysqli_fetch_array($query)) {
    echo "<option value='" . $row['weaponCategory'] ."'>" . $row['weaponCategory'] ."</option>";
    } ?>
    </select>
    <input type="Submit" value="Change">
</form>

<?php
}else{
    echo 'No entry found. <a href="javascript:history.back()">Go back</a>';
}
?>

【问题讨论】:

  • 马上,您将mysqli_mysql_ 混合在一起,所以这是不行的。您正在使用 mysqli_ 进行连接,但使用 mysql_ 进行查询
  • 数组有什么问题?只需将您的 if 更改为 if ($row = mysql_fetch_array($query)) 并删除 while 循环。您在 $row 变量中拥有所需的所有信息。
  • (FYI)=> 这段代码有太多问题,这就是我没有费心回答的原因。
  • 嘿,我的糟糕,我完全忘记了我正在连接 mysqli。我知道,迟钝。无论如何,我已经接受了你的所有建议,但仍然没有运气。另外,如果我只使用@jeroen 提到的if 语句,则页面只是空白。请原谅我的无知。如果有人对此有任何其他想法,我已经更新了代码以显示所做的更改。
  • 我在这里看不到任何变化。编辑:啊,我们开始了,它刚刚开始。

标签: php html mysql forms


【解决方案1】:

根据 OP 的要求(来自评论对话)

代替

if(mysqli_num_rows($query)>=1){ 

使用

if(mysqli_num_rows($query) >0){

【讨论】:

    【解决方案2】:

    你在混合函数

    mysqli_connect("localhost","username","password","db_name");
    

    不适合

    mysql_query("SELECT * FROM weapons limit 1");
    

    试试

    $query = mysqli_query($con, "SELECT * FROM weapons limit 1");
    

    然后

    if($query->num_rows >= 1)
    

    【讨论】:

      【解决方案3】:

      改变这个

       $query = mysql_query("SELECT * FROM weapons limit 1");
      

       $query = mysqli_query("SELECT * FROM weapons limit 1");
      

      但是,当您通过 mysqli 连接时,您的所有代码都是 mysql ! .

      【讨论】:

      • 那么对于&lt;?php while ($row = mysql_fetch_array($query)) ;-) 这个问题有太多问题了,这就是我没有打扰的原因。
      • 谢谢,我有时会放一些相当长的东西,哈哈——你看起来也是个好人。我来自加拿大,就在渥太华郊外,你呢?并感谢您的徽章:)
      • 我也删除了 cmets。瑞典,不错的地方,从我看过的许多照片和纪录片来看。我想去的地方。
      • 这里有很多美丽的地方。我喜欢参观的其中之一(去过那里 2 次)是 Maritimes。新斯科舍、加斯佩西、爱德华王子岛等,魁北克是一个美丽的省份。这里的人很好:)
      【解决方案4】:

      您与mysqli 联系,这很好。然后,您尝试通过mysql 运行查询。这是两个独立的扩展。您不能将它们混合在一起,因为它们不会相互“交流”。坚持mysqli。

      【讨论】:

        猜你喜欢
        • 2011-03-01
        • 2021-06-26
        • 2013-12-20
        • 2015-09-12
        • 2014-05-23
        • 2018-10-01
        • 1970-01-01
        • 1970-01-01
        • 2021-07-10
        相关资源
        最近更新 更多