simplequery($q);"/> simplequery($q);">

mysql用php如何分批处理插入?比如前1000条数据处理结束后,再处理1001至2000条,然后再处理2001至3000条…直到全部处理完毕

WBOY
풀어 주다: 2016-06-13 11:56:44
원래의
2033명이 탐색했습니다.

mysql用php怎么分批处理插入?比如前1000条数据处理结束后,再处理1001至2000条,然后再处理2001至3000条……,直到全部处理完毕?
当表 member中数据量不大时,可以一次性执行:

$q="select * from member'";<br />$r=$obj_db->simplequery($q);<br />while($a=$obj_db->fetchrow($r,DB_FETCHMODE_ASSOC)){<br />   $id=$a[id];<br />   $mccd=$a[cca]+$a[ccb];<br />   <br />   $query="insert into mingxi (mid,mccd,mtime) values ('$id','$mccd','$time')";<br />   $obj_db->simplequery($query);<br />}
로그인 후 복사


但当member中数据量达到百万条时,说会出现执行超时的错误:
Fatal error: Maximum execution time of 30 seconds exceeded in D:

那么怎么现实分批处理呢,比如前1000条数据处理结束后,再处理1001至2000条,然后再处理2001至3000条……,直到全部处理完毕?

$q="select * from member'";<br />$r=$obj_db->simplequery($q);<br />while($a=$obj_db->fetchrow($r,DB_FETCHMODE_ASSOC)){<br />$i++;<br /><br />$ep=1000;//这里假设处理完第1个1000条后再处理第二个1000条,直至处理结束?<br /><br />   $id=$a[id];<br />   $mccd=$a[cca]+$a[ccb];<br />   <br />   $query="insert into mingxi (mid,mccd,mtime) values ('$id','$mccd','$time')";<br />   $obj_db->simplequery($query);<br />}
로그인 후 복사



请高手帮写出详细代码,谢谢!因代码隐藏在后台执行,所以不要考虑用分页一页一页手工去点的方式
------解决方案--------------------
可以用 insert into mingxi (mid,mccd,mtime) select id, cca+ccb, time from member
------解决方案--------------------
$offs = isset($_GET['offs']) ? $_GET['offs'] : 1;<br />$sql = "select * from member limit $offs, 1000";<br />//做你该做的事<br />header("Location: $_SERVER[PHP_SELF]?offs=" . ($offs+1000));<br />
로그인 후 복사

관련 라벨:
원천:php.cn
본 웹사이트의 성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.
인기 튜토리얼
더>
최신 다운로드
더>
웹 효과
웹사이트 소스 코드
웹사이트 자료
프론트엔드 템플릿