举例:
function insertimportsql($filepath){
//打开文件
@$ha=fopen("$filepath","r");
$boolean= true;
//$ha 没有打开返回为空;
$i=0;
if(@$ha!=null){
    while(!feof($ha))
      {    @$data=fgetcsv($ha);
     if(true){
    
     $sql="insert into wang (id) values('$data[0]')";
     $result=mssql_query($sql);
     $i++;
     if(!@$result){
     $boolean= false;
     echo  "<script language='javascript'>alert('第'+$i+'行导入错误!');history.back();</script>";
   插入过程中如果出错显示第几行出错,回滚数据不进行插入,这里应该怎么写可以实现回滚操作
                             
     }
     }
    }
    //关闭文件
    $i=fclose($ha);
   
}else{
$boolean= false;
}
return $boolean;
      }

解决方案 »

  1.   

    1.保证要导入的表是InnoDB引擎
    2.mssql_query写事务处理语句,rollback回滚。
      

  2.   

    mysql中是这样的
    begin:开启事务
    commit:提交事务
    rollback:回滚事务
    mssql就不知道了,也许是一样的,lz不妨试一下。
      

  3.   

    如果你的wang表是innodb引擎,应该选择事务处理方案。
    如果不是,你只能每次插入新纪录的时候纪录插入的id,推入个数组什么的。然后到了出错的那条insert,就根据之前获取到的id,删除已经插入成功的纪录,很傻,但是也是个方法。建议每次进行导入之前,先查询当前表的最大自增id,然后再根据id做循环的插入操作,每插入一条就id++,自己控制自增的id
      

  4.   


    $query="insert into t values(12) d"; 
    mysql_query("set names gbk");
    mysql_query("begin");
    if(!mysql_query($query)){
    mysql_query("rollback");
    }else{
    mysql_query("commit");
    }你用的到底是什么数据库?
      

  5.   

    事务处理的回滚就是你需要的回滚,但是你得保证你要导入的表是innodb引擎,才能支持事务处理,才能支持回滚。
      

  6.   

    没事,你插入时记一下位置和个数,,如果出query出错,把原来的全删了