【问题标题】:Update Query not working with bootstrap modal更新查询不适用于引导模式
【发布时间】:2021-12-03 03:57:39
【问题描述】:

我有一个引导模式表单,当您单击编辑按钮时会打开它。不幸的是,更新查询没有执行。请帮我看看我哪里出错了。谢谢。

按钮代码是 <td><button type="button" class="btn btn-success editbtn">Edit House</button></td>

模态表单获取传递的数据,因为我在检查控制台时看到它。

<div class="modal fade" id="editmodal" tabindex="-1" role="dialog" aria-labelledby="myModalLabel" aria-hidden="true">
  <div class="modal-dialog">
    <div class="modal-content">
    <div class="modal-header">
        <h5 class="modal-title" id="exampleModalLabel">Edit</h5>
          <button type="button" class="close" data-dismiss="modal" aria-label="Close">
           <span aria-hidden="true">&times;</span>
          </button>
</div>
<div class="modal-body">
  <form class="form-sample" form action="updatehouse.php" method="POST">
          <div class="content-wrapper">
          <div class="row">
            <div class="col-12 grid-margin">
              <div class="card">
                <div class="card-body">
                  <h4 class="card-title">Update Property</h4>
                    <div class="form-group">
                      <label for="house">House Name</label>
                      <input type="hidden" name="house_id" id="house_id"/>
                      <input type="text" class="form-control" id="house_name" name="house_name" />
                    </div>
                    <div class="form-group">
                      <label for="landlord">Landlord</label>
                      <input type="text" class="form-control" id="house_landlord" name="house_landlord" />
                    </div>
                    <div class="form-group">
                      <label for="location">Location</label>
                      <input type="text" class="form-control" id="house_location" name="house_location" />
                    </div>
                    <div class="form-group">
                      <label for="commission">Commission</label>
                      <input type="text" class="form-control" id="house_commission" name="house_commission" />
                    </div>
                    <div class="form-group">
                      <label for="serviceCharge">Service Charge</label>
                      <input type="text" class="form-control" id="house_service_charge" name="house_service_charge" />
                      <input type="hidden" name="house_siku_added" id="house_siku_added"/>
                    </div>
                </div>
            </div>
          </div>
        </div>
      </div>
          <div class="modal-footer">
            <button type="button" class="btn btn-secondary" data-dismiss="modal">Close</button>
            <button type="submit" class="btn btn-primary" name="submit" id="submit">Save changes</button>
          </div>
          </form>
        </div>
      </div>
    </div>
  </div>

要触发按钮打开模态,我调用脚本

<script>
  $(document).ready(function() {
    $('.editbtn').on('click', function(){
      $('#editmodal').modal('show');
      $tr = $(this).closest('tr');
    var data = $tr.children("td").map(function(){
      return $(this).text();
    }).get();
    console.log(data);
    $('#house_id').val(data[0]);
    $('#house_name').val(data[1]);
    $('#house_landlord').val(data[2]);
    $('#house_location').val(data[3]);
    $('#house_commission').val(data[4]);
    $('#house_service_charge').val(data[5]);
    $('#house_siku_added').val(data[6]);
    });
  });   
</script>

updatehouse.php

include('config/db_connect.php');
    if(isset($_POST["submit"]))
    {   
                $house_id = $_POST['$house_id'];
                $house_name = $_POST['$house_name'];
                $house_landlord = $_POST['$house_landlord'];
                $house_location = $_POST['$house_location'];
                $house_commission = $_POST['$house_commission'];
                $house_service_charge = $_POST['$house_service_charge'];
                $house_siku_added = $_POST['$house_siku_added'];
    
    $sql = "UPDATE houses SET house_name = '$house_name', house_landlord = '$house_landlord', house_location = '$house_location', house_commission = '$house_commission', house_service_charge = '$house_service_charge', house_siku_added = '$house_siku_added' WHERE house_id = '{$house_id}'";  
        $sqlQuery = mysqli_query($connection, $sql);
                    
                    if($sqlQuery){
                     echo '<script> alert("Record was updated successfully."); </script>';
                     header("Location:listhouses.php");
                        }
                    else
                        {
                        echo '<script> alert("Data not updated"); </script>';
                        }
    }       
?>

【问题讨论】:

  • 警告:您对SQL Injections 持开放态度,应该使用参数化的prepared statements,而不是手动构建查询。它们由PDOMySQLi 提供。永远不要相信任何形式的输入!即使您的查询仅由受信任的用户执行,you are still in risk of corrupting your dataEscaping is not enough!
  • @Dharman 我最初拥有它们,$house_name = mysqli_real_escape_string($connection,$_POST['$house_name']); 将其剥离到最低限度,以查看更新有什么问题。谢谢。
  • 请不要使用转义。学习使用参数化查询。

标签: php mysqli bootstrap-modal


【解决方案1】:

以防其他人遇到同样的问题。这就是我能够得到结果的方式:

$sql = "UPDATE houses SET house_name = '$house_name', house_landlord = '$house_landlord', house_location = '$house_location', house_commission = '$house_commission', house_service_charge = '$house_service_charge', house_siku_added = '$house_siku_added' WHERE house_id = '$house_id' LIMIT 1";

我将学习准备好的语句。我们都必须从某个地方开始。谢谢。

【讨论】:

  • 这样的代码不应该在任何地方使用,因为它非常不安全。此外,您应该突出显示您所做的更改,以便其他人可以从您的答案中学习
  • @NicoHaase 我正在学习 PHP,我表示我将研究准备好的语句。同时,我发现Limit 1 是我更新数据库所需要的。谢谢。
  • 是否有多个房屋具有相同的house_id
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2023-03-26
  • 2018-05-12
  • 2017-05-26
  • 2016-10-06
  • 2013-01-27
  • 2019-03-08
  • 2019-01-06
相关资源
最近更新 更多