有两个方法可供选择,一种是把数据存入csv文件,然后执行load data infile
还有一种就是类似于sql server里面的bulk insert,使用insert语句插入批量数据,结合PHP的implode函数,
可以很简单的实现大批量数组数据的一次性插入。
[php] view plaincopy
$statement = "INSERT INTO table (title, type, customer) VALUES ";
foreach( $data as $row) {
$statement = ' ("' implode($row, '","') '")';
}
不过大批量数据的插入,需要注意mysql在内存上有限制:
><tr>
<td><input type="text" name="name1[]"></td>
<td><input type="text" name="name2[]"></td>
</tr>
<tr>
<td><input type="text" name="name1[]"></td>
<td><input type="text" name="name2[]"></td>
</tr>
<tr>
<td><input type="text" name="name1[]"></td>
<td><input type="text" name="name2[]"></td>
</tr>
提交后$_POST['name1']、$_POST['name2']都会以数组的方式储存着3行tr的每个值,通过foreach可以把它们逐行添加进数据表
思路:
1、构建form表单,输出文本框,用<textarea></textarea>吧,<input/>内不能换行,页面效果也不好(php、html代码嵌套写的话,直接写就行,建议用smarty,php与模板分离,比较清晰)
2、提交内容,确定用什么method(post、get)
3、获取内容,$str=$_POST['name'](name为textarea的name值)
4、$arr=split ('\r\n', $str);按换行符分割字符串为数组
5、循环执行插入语句,$arr每一层都是一条数据
把复选框的值作为参数提交,作为循环的次数
$s1 = $_POST['s1'];//获取样品数量
for($i = 1; $i<=$s1; $i++){
$tmp = $_POST['smp'$i]; //这里是对应循环中的文本框name属性
$sql = "insert into 表名(字段) values('样品名',数量)";
mysql_query($sql,$conn);
}
这样写,能看明白么?
先检查一下你的数据库 *** 作是否放在循环体里面。如果是在循环里面再检查一下你的表结构中各字段的约束是否有唯一。
你这样的循环插入库效率不高,可以把 values拼接起来,然后一次性插入。
首先10000txt文件要起一个有规律的名称。例如按数字大小。这样便于循环。
如果不是这样,也可以做,但是要遍历目录,判断文件。
$file_name_arr = scandir(文件目录);//遍历文件
unset($file_name_arr[0]);
unset($file_name_arr[1]);
$file_name_arr = array_values($file_name_arr);
foreach($file_name_arr as $file_name){
if(is_file(路径/$file_name){
$str_arr = get_txt(文件地址);
//把数据插入数据库,记得在把内容向表里插的时候要加addslashes(),$str_arr[0]就是标题,$str_arr[1]就是内容
}
}
function get_txt($file){
$str = file_get_contents($file);
$str_arr = preg_split('|\n|',$str);
return $str_arr;
}
建议把10000个文件分成多份执行,避免数据库跑死
以上就是关于PHP如何将下面数组遍历,插入数据库全部的内容,包括:PHP如何将下面数组遍历,插入数据库、PHP 表单添加多条数据到数据库、在php中把文本框的多条数据插入到数据库等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)