2014-12-05 80 views
0

我在從數據庫中刪除行時遇到問題。我嘗試綁定參數(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

回答

0

好,所以問題已解決。引起該問題的聲明是這樣:

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); 
      } 
    });