使用PHP从mysql数据库删除行时出错

问题描述:

我在从数据库中删除行时遇到问题。我尝试绑定参数(id)根据哪一行已被删除。它返回成功消息,该行已被删除,但该行实际上未从数据库中删除。 这里就是我使用AJAX调用删除脚本代码:使用PHP从mysql数据库删除行时出错

<script> 
    $("#del").click(function(){ 
     var id; 
     $("input:checked").each(function(){ 
      id=$(this).parent().parent().children(".id").html(); 
     }); 
     var datastring=JSON.stringify(id); 
     $.ajax({ 
      type:'post', 
      url:'delete.php', 
      data: {data:datastring}, 
      success: function(data){ 
       alert(data); 
      } 
     }); 
    }); 
</script> 

这里的删除脚本(delete.php)

if(isset($_POST["data"])) 
{ 
    $id=$_POST["data"]; 
    $db=mysqli_connect("localhost","root","","products"); 
    if($db) 
    { 
     $query=mysqli_prepare($db,"DELETE FROM product_info WHERE prod_id=?"); 
     $query->bind_param('i',$id); 
     $result=$query->execute(array($id)); 
     if($result) 
      echo "Deleted successfully"; 
     else 
      echo "Error in deletion of product"; 
     $query->close(); 
    } 
    else 
     echo "Error Connecting to DB"; 
} 
else 
    echo "POST not set"; 

“删除成功”的说法相呼应回来,但警告该行实际上并未从数据库中删除。如果我省略bind_param部分并直接在查询中指定id,那么该记录将被删除。 帮助!

+2

哪个值包含'id'在jQuery的功能? – 2014-12-05 10:51:10

+0

从'$ _POST ['data']'中获取'var_dump($ id)'后,检查它是否为绑定所需的格式。但从它的外观来看,你试图将数组转换成JSON,在这种情况下,你不能直接使用'='运算符,你需要渲染一个'IN'条件。 – fejese 2014-12-05 10:56:25

+0

即使在使用在条件查询中,结果是相同的@fejese – leMS 2014-12-05 11:08:55

好,所以问题已解决。引起该问题的声明是这样:

var datastring=JSON.stringify(id); 

相反,我这样做是在Ajax调用

$.ajax({ 
      type:'post', 
      url:'delete.php', 
      data: {data:id}, //instead of sending datastring, I sent the id directly 
      success: function(data){ 
       alert(data); 
      } 
    });