首页 > 删除数据库中表单内容时,删除的内容与我选中的不符

删除数据库中表单内容时,删除的内容与我选中的不符

php <table border="1px" cellpadding="0" cellspacing="0">
            <tr align="center">
                <td>id</td>
                <td>视频类型</td>
                <td>视频名称</td>
                <td>视频简介</td>
            </tr>
<?php
    $sql = mysql_query("SELECT * FROM wjyl_content1 ");
    while($row=mysql_fetch_array($sql)){
        ?>

            <tr>
                <td><?php echo @$row[content_id]?></td>
                <td><?php echo @$row[content_leixing]?></td>
                <td><?php echo @$row[content_title]?></td>
                <td><?php echo @$row[content_comment]?></td>
                <td>
                    <form action="#" method="get" name="form">
                <input type="submit" value="删除" name="submit">

                <?php
                $id=@$row['content_id'];
                if(@$_GET['submit']){
                $sql=mysql_query("DELETE  FROM wjyl_content1 WHERE `content_id`='$id'");
                if($sql){
                    echo "<script>alert('删除成功!');history.back();</script>";
                }else{
                    echo "<script>alert('删除失败!!');history.back();</script>";
                }

                }

                ?>
                </form>
                </td>
            </tr>


<?php
    }
?>
</table>


删除id=11的内容时,就删除了id=9的内容了,,,求解???


你的代码在输出列表的过程中就去检测 是否有 if(@$_GET['submit']){, 如果有就执行删除.
$sql=mysql_query("DELETE FROM wjyl_content1 WHEREcontent_id='$id'");
而你删除的时候是使用的当前查询结果集中的id, 所以你每点一次删除,就是把当前表里第一条删除掉.

正确的做法应该是下面这样的(注意SQL注入的问题,请根据自己所需要的参数类似对传入的值做相应的检测).

php<?php
    if(@$_GET['submit']){
        $id=@$_GET['id'];
        if(strlen($id) > 0){//如果内容不为空
            $sql=mysql_query("DELETE  FROM wjyl_content1 WHERE `content_id`='$id'");
            if($sql){
                echo "<script>alert('删除成功!');history.back();</script>";
            }else{
                echo "<script>alert('删除失败!!');history.back();</script>";
            }
            exit();
        }
    }
?>



<table border="1px" cellpadding="0" cellspacing="0">
        <tr align="center">
            <td>id</td>
            <td>视频类型</td>
            <td>视频名称</td>
            <td>视频简介</td>
        </tr>
<?php
    $sql = mysql_query("SELECT * FROM wjyl_content1 ");
    while($row=mysql_fetch_array($sql)){
?>
        <tr>
            <td><?php echo @$row[content_id]?></td>
            <td><?php echo @$row[content_leixing]?></td>
            <td><?php echo @$row[content_title]?></td>
            <td><?php echo @$row[content_comment]?></td>
            <td>
            <form action="#" method="get" name="form">
                <input type="hidden" name="id" value="<?php echo @$row[content_id]?>" />
                <input type="submit" value="删除" name="submit" />
            </form>
            </td>
        </tr>

<?php
}
?>
</table>



逻辑上有问题。。。一行是一个form,不应该是一个删除键一个form,所以把form往前写应该就行了。。

建议:这种情况下一般不要想当然,先输出sql 语句看看,然后慢慢调试

【热门文章】
【热门文章】