举例:
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;
}
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;
}
2.mssql_query写事务处理语句,rollback回滚。
begin:开启事务
commit:提交事务
rollback:回滚事务
mssql就不知道了,也许是一样的,lz不妨试一下。
如果不是,你只能每次插入新纪录的时候纪录插入的id,推入个数组什么的。然后到了出错的那条insert,就根据之前获取到的id,删除已经插入成功的纪录,很傻,但是也是个方法。建议每次进行导入之前,先查询当前表的最大自增id,然后再根据id做循环的插入操作,每插入一条就id++,自己控制自增的id
$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");
}你用的到底是什么数据库?