从数据库删除不起作用

时间:2011-07-08 07:33:47

标签: php mysql ajax

<script type="text/javascript" src="http://ajax.googleapis.com/ajax/libs/jquery/1.3.0/jquery.min.js"></script>
<script type="text/javascript">
$(document).ready(function() {
$('#load').hide();
});

$(function() {
$(".delete").click(function() {
$('#load').fadeIn();
var commentContainer = $(this).parent();
var id = $(this).attr("id");
var string = 'id='+ id ;

$.ajax({
   type: "POST",
   url: "delete.php",
   data: string,
   cache: false,
   success: function(){
    commentContainer.slideUp('slow', function() {$(this).remove();});
    $('#load').fadeOut();
  }

 });

return false;
    });
});


</script>



<?php

include('config.php');
$sql=mysql_query("SELECT * FROM messages ORDER BY mes_id DESC LIMIT 20");
while($row=mysql_fetch_array($sql))
        {
        $msgID= $row['mes_id'];
        $msg= $row['msg'];

?>

<div id="<?php echo $msgID; ?>"  align="left" class="message_box" >
<span class="number"><?php echo $msgID; ?></span><?php echo $msg; ?> 
 <a href="delete.php" class="delete">x</a>
</div>

<?php
}

?>

我编写了这个来显示来自数据库的条目和一个删除按钮以显示在每个div中。 delete.php包含代码

<?php 
include('config.php');
echo $id=$_REQUEST['msgID'];
$sql="delete from messages where mes_id='$id'";
$res=mysql_query($sql) or die(mysql_error());

?>

但它不起作用。我无法从数据库中删除条目..

5 个答案:

答案 0 :(得分:2)

检查您的请求var_dump($_REQUEST) 你发送var string = 'id='+ id ; 并试图接收$_REQUEST['msgID'] 只需更改为$_REQUEST['id']

答案 1 :(得分:1)

除了Subdiggers的答案,SQL Injection的潜力很大,请参阅: http://php.net/manual/en/security.database.sql-injection.php

答案 2 :(得分:1)

乍一看,我想你想改变这一行:

var id = $(this).attr("id");

分为:

var id = $(commentContainer).attr("id");

因为this引用了点击的链接,该链接没有id属性。

delete.php您正在寻找$_REQUEST['msgID'],但在发布请求时您正在使用id(而不是msgID),因此您需要更改该内容以匹配同样。

答案 3 :(得分:0)

您的数据有误: 而不是:

data: string,

字符串是:

var string = 'id='+ id ;

数据应该是键/值对。这样:

data: msgID : id

我将其设为msgID,因为您的$_REQUEST['msgID']正在调用msgID。

答案 4 :(得分:0)

注意SQL注入!在将{id}插入查询之前,请在$ id上使用intval,以确保它是一个整数。