无法使用Ajax运行sql查询

时间:2019-07-05 20:13:10

标签: php jquery ajax dom

我正在创建一个管理面板,用户可以在其中创建修改和删除事件。我对Ajax有问题(我猜是)。即使ajax响应看起来很好(模式已隐藏),数据库也不会更新。

使用7.2 Php版本(如果重要

<div class="modal">
            <div class="modal_content">
                <label for="event_name">Nom de l'évènement</label>
                <input type="text" id="event_name">
                <label for="event_date">Date</label>
                <input type="text" id="event_date">
                <label for="event_desc">Description</label>
                <input type="text" id="event_desc">
                <label for="event_thumb">Affiche</label>
                <input type="text" id="event_thumb">
                <input type="hidden" id="event_id">
                <a class="save">Sauvegarder</a>
              </div>
          </div>




<script>
  $(document).ready(function(){

      $('.modal').hide();

    //  append values in input fields
      $(document).on('click','a[data-role=update]',function(){
            var event_id  = $(this).attr('id');
            var event_name  = $('#'+event_id).children('td[data-target=event_name]').text();
            var event_date  = $('#'+event_id).children('td[data-target=event_date]').text();
            var event_desc  = $('#'+event_id).children('td[data-target=event_desc]').text();

            $('#event_name').val(event_name);
            $('#event_date').val(event_date);
            $('#event_desc').val(event_desc);
            $('#event_id').val(event_id);
            $('.modal').show();
      });

      // now create event to get data from fields and update in database 

       $('.save').click(function(){
          var event_id  = $('#event_id').val(); 
         var event_name =  $('#event_name').val();
          var event_date =  $('#event_date').val();
          var event_desc =   $('#event_desc').val();

          $.ajax({
              url      : 'modifyEvent.php',
              method   : 'post', 
              data     : {event_name :event_name , event_date:event_date , event_desc:event_desc , event_id:event_id},
              success  : function(response){
                            // now update user record in table 
                             $('#'+event_id).children('td[data-target=event_name]').text(event_name);
                             $('#'+event_id).children('td[data-target=event_date]').text(event_date);
                             $('#'+event_id).children('td[data-target=event_desc]').text(event_desc);
                             $('.modal').hide(); 

                         }
          });
       });
  });
</script>

还有我的Php脚本:

if(isset($_POST['event_id'])){

    $event_name = $_POST['event_name'];
    $event_date = $_POST['event_date'];
    $event_desc = $_POST['event_desc'];
    $event_id = $_POST['event_id'];

    //  query to update data 

    $result  = mysqli_query($connection , "UPDATE lepressclub_events SET event_name='$event_name' , event_date='$event_date' , event_desc = '$event_desc' WHERE event_id='$event_id'");
    if($result){
        echo 'data updated';
    }

}
?>

数据库连接良好,查询也良好。但是数据库没有更新..

感谢您的帮助:)

1 个答案:

答案 0 :(得分:1)

method: "post"不是有效的$ .ajax参数属性。您应该使用type: "post"

默认类型为“获取”,因此$_POST应该为空。

可以找到文档here

$.ajax({
    url      : 'modifyEvent.php',
    type     : 'post',  // <- Here is the change
    data     : {event_name :event_name , event_date:event_date , event_desc:event_desc , event_id:event_id},
    success  : function(response){
        // now update user record in table 
        $('#'+event_id).children('td[data-target=event_name]').text(event_name);
        $('#'+event_id).children('td[data-target=event_date]').text(event_date);
        $('#'+event_id).children('td[data-target=event_desc]').text(event_desc);
        $('.modal').hide(); 
    }
});

即使与您的问题没有直接关系,您的PHP脚本也允许进行SQL注入。使用prepared statements to prevent this。这是巨大的安全风险。