使用一个多行文本框,来循环添加数据
<textarea id="name" name="name" cols="40" rows="10"></textarea>使用换行来隔开每条数据
$name=$_POST['name'];
$name=ereg_replace("\r\n",",",$name);
$name=ereg_replace("\n",",",$name);
$nameArr=split(",",$name);循环添加的语句
for($i=0;$i<count($nameArr);$i++){
插入的语句 INSERT INTO test(name) VALUES('".$nameArr[$i]."');
}问题来了
当我一次有10000行的数据的时候,我插入到数据库的数据一般只有几千条,2000到3000多不等
当我一次有5000行的数据,插入到数据库的数据有时是5000条没有问题。
就是说,为什么在插入10000行以上的数据的时候,插入到数据库里的记录不是10000条呢?而是几千条记录不等。
为什么数据会丢失?
<textarea id="name" name="name" cols="40" rows="10"></textarea>使用换行来隔开每条数据
$name=$_POST['name'];
$name=ereg_replace("\r\n",",",$name);
$name=ereg_replace("\n",",",$name);
$nameArr=split(",",$name);循环添加的语句
for($i=0;$i<count($nameArr);$i++){
插入的语句 INSERT INTO test(name) VALUES('".$nameArr[$i]."');
}问题来了
当我一次有10000行的数据的时候,我插入到数据库的数据一般只有几千条,2000到3000多不等
当我一次有5000行的数据,插入到数据库的数据有时是5000条没有问题。
就是说,为什么在插入10000行以上的数据的时候,插入到数据库里的记录不是10000条呢?而是几千条记录不等。
为什么数据会丢失?
插入的语句 INSERT INTO test(name) VALUES('".$nameArr[$i]."'),
('".$nameArr[++$i]."'),
('".$nameArr[++$i]."'),
('".$nameArr[++$i]."'),
('".$nameArr[++$i]."'),
('".$nameArr[++$i]."'),
('".$nameArr[++$i]."'),
('".$nameArr[++$i]."');
}一次多插入几个内容呢?
++$i来测试就插入251条数据,测试两次插入也是,为什么500行就不能一次全部插入成功呢?
数据少的话,比如100,200行的数据,插入OK,为什么数据大量就有数据丢失的现象?
脚本有没有超时(默认是30秒,max_execution_time = 30,改时间长一点试试)
添加的速度很快,一般也有5秒之内就添加OK了。
if (!mysql_query($sql)) die(mysql_error());
应该没有问题,只是在插入的时候,有数据丢失引号转义了,另外我输入的数据基本就是英文和中文,没有其他符号
function time_test(){
list($usec, $sec) = explode(" ", microtime());
return ($usec + $sec);
}function write_exec_log($page,$time_start,$time_end){
$time = $time_end - $time_start;
$log_file = "/xxx/logs/{$page}_php_exec_log";
$fp = fopen($log_file,'a+');
$now = date('Y/m/d H:i:s');
fwrite($fp,$now."\t".$page."\t".$time."\n");
fclose($fp);
看一下执行了多长时间
然后看log记录
500行的数据,粘贴到多行文本框里循环加到MYSQL表里面
有时290,390,490这样的插入数,反正就是500行不会全部插入进去,很奇怪,找不出问题所在。