通过Php程序 像数据库插入内容时。在页面提交之后,mysql会有两个相同的数据 只有id不同

if($action == 'insert'){ //接收数据 $title = empty($_POST['subject']) ? '' : $_POST['subject']; $content = empty($_POST['content']) ? '' : $_POST['content']; $user_id = $_SESSION['myuser']['id']; $create_ad = time(); $summary = empty($_POST['summary']) ? '' : $_POST['summary']; $category_id = empty($_POST['category_id']) ? '' : $_POST['category_id']; $cover = empty($_POST['cover']) ? 'mr.jpg' : $_POST['cover']; $state = empty($_POST['submit']) ? '' : $_POST['submit']; $is_delete = 0; $tags = ''; //验证 if($category_id == '' || $title == '' || $content = '' || $summary == ''){ header('refresh : 2 ; url = article.php?a=add'); echo '输入的信息有误,请重新输入'; exit; } //入库 $sql = "INSERT INTO tn_article VALUES(null, '$title','$content', $user_id, $create_ad, '$summary', $category_id, '$cover', '$state', '$is_delete', '$tags')"; //获取页面 if($dao ->query($sql)){ header('location:article.php?a=list'); exit; } else{ header('refresh : 2; url = article.php?a=add'); echo '添加失败'; exit; }}

看了下你的代码 没什么问题 估计是你请求了两次 然后插入了两条记录 由于主键自增的 所以导致只有主键不一样
整理后的代码我贴出来 有兴趣的可以一起看下

 if($action == 'insert'){ 
    //接收数据 
    $title = empty($_POST['subject']) ? '' : $_POST['subject']; 
    $content = empty($_POST['content']) ? '' : $_POST['content']; 
    $user_id = $_SESSION['myuser']['id']; 
    $create_ad = time(); $summary = empty($_POST['summary']) ? '' : $_POST['summary']; 
    $category_id = empty($_POST['category_id']) ? '' : $_POST['category_id']; 
    $cover = empty($_POST['cover']) ? 'mr.jpg' : $_POST['cover']; 
    $state = empty($_POST['submit']) ? '' : $_POST['submit']; 
    $is_delete = 0;
    $tags = ''; //验证 
    if($category_id == '' || $title == '' || $content = '' || $summary == ''){ 
        header('refresh : 2 ; url = article.php?a=add'); 
        echo '输入的信息有误,请重新输入'; exit; 

    } 
    //入库 
    $sql = "INSERT INTO tn_article VALUES(null, '$title','$content', $user_id, "
            . "$create_ad, '$summary', $category_id, '$cover', '$state', '$is_delete', '$tags')"; 
    //获取页面 
    if($dao ->query($sql)){ 
        header('location:article.php?a=list'); 
        exit; 

    } else{
        header('refresh : 2; url = article.php?a=add');
        echo '添加失败'; exit; 
    }
}

可以试试在表单加入一个token字段。这个字段由后台生成同时保存到session中。表单提交的时候判断下如果提交的token与session中的一致执行插入操作 同时将session中的token清空。这样可以在很大程度上防止重复提交了。

那就是你插了两次,你的代码,好乱,手机党不好意思。