十年网站开发经验 + 多家企业客户 + 靠谱的建站团队
量身定制 + 运营维护+专业推广+无忧售后,网站问题一站解决
PHP框架 Laravel Eloquent ORM 批量插入数据是通过传入数组实现的。
网站建设哪家好,找创新互联!专注于网页设计、网站建设、微信开发、微信小程序定制开发、集团企业网站建设等服务项目。为回馈新老客户创新互联还提供了深圳免费建站欢迎大家使用!
比如:
DB::table('users')-insert(array(
array('email' = 'taylor@example.com', 'votes' = 0),
array('email' = 'dayle@example.com', 'votes' = 0),
));
以上是操作表users,执行insert语句,参数是一个数组,封装了两条数据,这里可以自定义数据,insert内部就编程批量插入了。
然后调用save方法:
public static function create(array $attributes)
{
$model = new static($attributes);
$model-save();
return $model;
}
有两种情况, 一是 php可运行的最大时间是不是有设置. 虽然你加了set_time_limit(0). 但很有可能没设置成功,因为php有安全模式, 你可以修改php.ini
2是系统资源不够, 可能是php宕了或者 数据库宕了.
批量的话可以这样做:
input
type='text'
name='username[]'
/br
/
input
type='text'
name='username[]'
/br
/
input
type='text'
name='username[]'
/br
/
input
type='text'
name='username[]'
/br
/
input
type='text'
name='username[]'
/br
/
也就是name用
数组
,这样你获取的$_POST['username']就是一个数组,然后你
foreach
循环插入就行了。
if ($strleng100){
//如果大于100条就每次写入100,休息1秒,然后继续写,直到写完为止
$write_count = floor($strleng/100);
while ($write_count 0){
for ($i=0;$i100;$i++){
echo "INSERT INTO tbl_name (a,b,c) VALUES(1,2,3)";//写100次就休息
}
//echo "INSERT INTO tbl_name (a,b,c) VALUES(1,2,3),(4,5,6),(7,8,9);";这样可以一次插入多条数据,效率更高
//参考
$write_count -=1 ;
sleep(1);
echo '休息1秒';
}
}
我知道你为什么会停下来,因为mysql插入大量数据(1000W)的情况下,执行时间需要的很长,而你八成设定执行时间不限制,如果时间默认超过30秒,那么程序就会自动停下来。
1000 0000
?php
set_time_limit(0);#设置执行时间为不限制~
for($i=0;$i1000;++$i){#嵌套循环,避免悲剧;
for($j=0;$j10000;$j++){
mysql_query(" 插入把~");
}
}
?