Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/274.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 如何使用jquery、ajax和PDO删除行_Php_Jquery_Mysql_Ajax_Pdo - Fatal编程技术网

Php 如何使用jquery、ajax和PDO删除行

Php 如何使用jquery、ajax和PDO删除行,php,jquery,mysql,ajax,pdo,Php,Jquery,Mysql,Ajax,Pdo,我在mysql数据库中有两个表,'cars'和'address'与主键有关,在数据库中有'on delete restrict',所以我不能删除一些有car的地址,这很好。DB中的地址有“street”、“number”和“city”列。我想删除所有没有车的位置,但我不知道我的代码哪里错了,它不起作用。我检查了所有路径,一切正常。任何建议我都很感激 这是我的模式删除按钮: <a href="#" data-toggle="modal" data-target="#delete_loc<

我在mysql数据库中有两个表,'cars'和'address'与主键有关,在数据库中有'on delete restrict',所以我不能删除一些有car的地址,这很好。DB中的地址有“street”、“number”和“city”列。我想删除所有没有车的位置,但我不知道我的代码哪里错了,它不起作用。我检查了所有路径,一切正常。任何建议我都很感激

这是我的模式删除按钮:

<a href="#" data-toggle="modal" data-target="#delete_loc<?php echo $value['id']?>" role="button" class="btn btn-danger btn-sm">
                <i class="fa fa-trash-o"></i> Delete
            </a>

                <div class="modal fade" id="delete_loc<?php echo $value['id']?>" tabindex="-1" role="dialog" aria-labelledby="mydelModalLabel" aria-hidden="true">
                    <div class="modal-dialog">
                        <div class="modal-content" style="text-align:center;">
                            <div class="modal-header">
                                <button type="button" class="close" data-dismiss="modal"><span aria-hidden="true">&times;</span><span class="sr-only">Close</span></button>
                                <h2 class="modal-title" id="mydelModalLabel" style="color:#a80b27;text-transform:uppercase;font-size:1.6rem;">Warning   !</h2>
                            </div>
                            <div class="modal-body">
                                <h5>Are you shure you want delete address ID <b><?php echo $value['id']?></b>?</h5>
                            </div>
                            <div class="modal-footer">
                            <input type="hidden" name="loc_id" id="loc_id" value="<?php echo $value['id']?>">
                                <a href="" role="button" class="btn btn-danger" id="del_loc">
                                    Yes, I'm shure!
                                </a>
                                <button type="button" class="btn btn-default" data-dismiss="modal">No</button>
                            </div>
                        </div>
                    </div>
                </div>

如果您正确地获得了值
loc\u id
值,我认为下面的代码将对您有很大帮助。让我们试试

JavaScript

<script type="text/javascript">
     $(document).ready(function() {
      $('#del_loc').bind('click',function(e){
      e.preventDefault();
        var id = $('#loc_id').val();

        var data = 'loc_id='+id;
     //try here alert(id); For checking whether you are getting value or not
     $.ajax({
       type: "POST",
       url: "include/locations/delete.php",
       dataType:'JSON',
       data: data,
       success: function(result){
        var res=eval(result);
        if(res.success){
          window.location.replace("address.php?id=");
               }
       else
       {
       if(res.nAddress){
        $('.panel-footer').append('<span class="help-block"  style="float:right;"><strong>'+err_msg.nAddress+'</strong></span>');
        }
      }
    }
   });
  });
});
</script>

尝试使用软删除而不是硬删除。这样,在从MySql中删除时不会出现任何冲突。在表中添加一个名为deleted的列,数据类型为tinyint&onclick of delete button set deleted flag为1。您说您想删除每个没有汽车的位置,但您的SQL只是
“delete from address WHERE id=:id'
,它只会删除一行从
地址
表(假设
id
是它的主键)。代码中没有任何内容表明它应该删除所有没有cars@KunalGadhia我不知道你想说什么。使用软删除与这个问题有什么关系?@bleeteddod这是我的错误,因为我没有说我在一页上显示了所有地址,在每个地址的末尾,我为每一行/地址设置了模式删除按钮,该按钮应该删除该行/地址。但是这段代码不起作用,当我试图删除一些行时,DB中没有任何事情发生,除了关闭模态窗口。add
console.log(data)在ajax调用之前,控制台中的输出是什么?为什么你认为这会有帮助?是的,任何错误注释plz..我是ajax和jquery的新手。不,我想说的是,我没有理由相信在输入上调用
mysqli\u real\u escape\u string
会对这个问题产生任何影响(除非OP的ID值中有撇号或类似符号,这是极不可能的)。此外,OP已经在使用的
PDO::prepare()
PDOStatement::execute()
将自动处理任何需要的转义,因此这不是这里的问题。请参阅
    <?php

     require '../../config/init.php';
     require '../functions/locations.php';
     require '../services/xss.php';

     $loc_id = _e($_POST['loc_id']);

     $data = deleteLoc($loc_id);

       if(is_array($data)){
        print_r(1);
       }
       else{
          echo $data;
       }

  ?>
function deleteLoc($loc_id){
    global $conn;

            try{
                $stmt = $conn->prepare('DELETE FROM address WHERE id=:id');
                $stmt->bindParam(':id',$loc_id);                
                $stmt->execute();
                $row[] = 'deleted';
                return $row;                
            }
            catch(PDOException $e){
                if(DEBUG === true){
                    header('Location:../../error/db_error.php?err_msg='.$e->getMessage());
                }
                else{
                    header('Location:../../error/db_error.php?err_msg');
                }
        }   
}
<script type="text/javascript">
     $(document).ready(function() {
      $('#del_loc').bind('click',function(e){
      e.preventDefault();
        var id = $('#loc_id').val();

        var data = 'loc_id='+id;
     //try here alert(id); For checking whether you are getting value or not
     $.ajax({
       type: "POST",
       url: "include/locations/delete.php",
       dataType:'JSON',
       data: data,
       success: function(result){
        var res=eval(result);
        if(res.success){
          window.location.replace("address.php?id=");
               }
       else
       {
       if(res.nAddress){
        $('.panel-footer').append('<span class="help-block"  style="float:right;"><strong>'+err_msg.nAddress+'</strong></span>');
        }
      }
    }
   });
  });
});
</script>
<?php

     require '../../config/init.php';
     require '../functions/locations.php';
     require '../services/xss.php';

     $loc_id = _e($_POST['loc_id']);

     $data = deleteLoc($loc_id);

       if(is_array($data)){
        echo json_encode(array('success'=>true));
       }
       else{
          echo json_encode($data);
       }
  ?>