Php 表示已成功更新,但当我查看数据库时,它不是

Php 表示已成功更新,但当我查看数据库时,它不是,php,mysql,Php,Mysql,你们能再检查一下我的密码吗。当我点击更新按钮时,它告诉我更新成功了,但是当我查看我的数据库时,没有任何变化。我知道我做错了什么。希望你们能帮我弄清楚。谢谢 我还在学习,很荣幸能向你们学习。请友好地使用基本术语呵呵 <html> <body> <div> <form action="edit.php?id=<?php echo $id;?>" method="post"> <div>

你们能再检查一下我的密码吗。当我点击更新按钮时,它告诉我更新成功了,但是当我查看我的数据库时,没有任何变化。我知道我做错了什么。希望你们能帮我弄清楚。谢谢

我还在学习,很荣幸能向你们学习。请友好地使用基本术语呵呵

<html>
<body>

<div>
    <form action="edit.php?id=<?php echo $id;?>" method="post">

              <div>
                <label for="prov">Provinces</label><br>
                <select id="prov"type="text" name="provi1">
                  <option><?php echo $provi; ?></option>
                  <option value="Isabela">Isabela</option>
                  <option value="La Union">La Union</option>
                  <option value="Pangasinan">Pangasinan</option>
                  <option value="Ilocos Sur">Ilocos Sur</option>
                  <option value="Ilocos Norte">Ilocos Norte</option>
                </select>
              </div>

              <div>
                <label>Date</label><br>
                      <input type="date" name="date" value="">
                  </div>

              <div>
                <label>Typhoon Name</label><br>
                      <input type="text" name="typhoon" value="<?php echo $typhoon; ?>">
              </div>

              <div>
                <label>Warning #</label><br>
                      <input type="text" name="warning" value="<?php echo $warning; ?>">
              </div>

              <div>
                <label for="prov">SS Height</label><br>
                <label>2-3 meters
                  <input type="radio" name="meter" value="2-3 Meters"
                  <?php if ($ssh == '2-3 Meters') echo 'checked="checked"'; ?>>
                </label>

                <label>1-2 meters
                  <input type="radio" name="meter" value="1-2 Meters"
                  <?php if ($ssh=='1-2 Meters') echo 'checked="checked"'; ?>> 
                </label>

                <label>< 1 meter
                  <input type="radio" name="meter" value="< 1 Meter"
                  <?php if ($ssh=='< 1 Meter') echo 'checked="checked"'; ?>>
                </label><br>

                <label for="imp">Impacts</label><br>
                  <textarea id="imp" type="text" name="impact1"><?php echo $impact; ?></textarea>

                  <label for="adv" >Advice</label><br>
                  <textarea id="adv" type="text" name="advice1"><?php echo $advice; ?></textarea>
              </div>

            <div class="form-group">
              <input type="submit" value="Update" name="update">
                <input type="reset" value="Cancel">
             </div>
    </form>
</div>

</body>
</html>

修复MySQL注入,否则我会来删除你的数据库。见有问题的评论

然后,并且只有在您修复该问题之后:


您正在使用来自$\u GET的id,但对于更新,您的id来自$\u POST。然而,您忘了首先说明这一点,您的代码对SQL注入是完全开放的。这不仅是一个安全漏洞,也是一个非常常见的错误源,因为您几乎无法控制正在执行的SQL代码。作为调试的一部分,输出正在执行的查询的实际运行时值,并在数据库上手动测试该查询。停止。任何黑客都可以在5秒内删除你的整个数据库。别开玩笑了。谷歌SQL注入,再试一次,这次使用安全代码,然后再次询问。我知道之前的评论基本上是一样的,但你应该知道这是非常严重的,所以我只想重复一遍。这并不能回答我的问题,但是这些信息确实很有用。非常感谢你@David和Roemerdos它只是一个inout,就像其他所有的一样,只是用户看不到它,也不能更改它。当然,把它放在表单的开始-结束标记之间。在哪里都不重要。像对待任何其他输入一样对待它。你知道为什么只有带标签的一个被更新吗?它还删除了其他数据,只保存带有输入标记的数据。因为你从问题中删除了php,我看不出你在做什么。基本上:它会更新您在查询中输入的任何内容,如果您从$\u POST获取这些内容,它必须有相应的输入。查询中的任何内容都必须具有相应的值,即来自POST的值]。如果缺少其中某个值,则查询将有一个空值,并将其写入数据库。仅写入已定义的值。