php批量添加数据与批量更新数据方法
批量数据录入
设计方法:同时提交多条表单记录,为每一条记录设置相同的文本域名称,然后在表单处理页中,通过for
循环来读取提取表单提交的数据,最后以数据的形式将数据逐条添加到数据库中。
其中,应用一个count()函数来获取数组中元素的个数。
int count(mixed var);
表单提交页面
代码如下 | 复制代码 |
<form name="form1" method="post" action="index_ok.php"> <tr> <input type="submit" name="submit" value="提交">
数据库连接页 <?php
|
批量更新数据
主要通过while, list(),each()函数来实理数据的批量更新
list()函数用于一次性为多个变量赋值
代码如下 | 复制代码 |
<?php session_start(); include("conn/conn.php");?> <form name="form1" method="post" action="index_ok.php"> <tr> 表单处理页 <?php session_start(); include("conn/conn.php") if($submit=="激活"){ if($submit2=="冻结"){ |
总结,
心细的朋友会发现两个例子都有几个共同点,一个是表单from的表单名是以counts[]数组形式了,而在php处理接受页面都会使用for 或while来实现遍历了,下面我就简单的给大家分析这两个例子。
counts[]
这个在表单中是代表数组,如果你有10个表单那么我们name=counts[] 意思他们内个都是一样数组,知道这个是数组了就知道下面知道为什么会使用遍历了。
for 或while
因为表单过来的是数组我们就可以遍历数组然后对数据进行保存了,如下代码
while(list($name,$value)=each($_POST)){
或
for($i=0;$i<count($sp_name);$i++){
两个实现结果是一样的的哦。
如果说到php遍历目录我们很多朋友会想到是opendir与readdir了,这样就可以遍历目录并显示文件了,但在php中有一个更简洁的遍历目录的函数glob估计很少有人知道此函数,不过我觉得比起opendir与readdir要简单多了哦。PHP glob函数的使用:glob — 寻找与模式匹配的文件路径
例子
代码如下 | 复制代码 |
<?php |
第一种:
glob函数的参数里面是:*.* ,意思是扫描当前目录下的文件,不包括文件夹,返回的是一个数组,以下二种情况一样。
第二种:
glob函数的参数里面是:images/* ,是指定目录扫描所有的文件,包括文件夹,也可以扫描指定的文件类型,如:images/*.jpg;注意,如果只输入:images只会返回该文件夹名称,如果只输入:images/则什么也不会返回;
第三种:
glob函数的参数里面是:* ,可以扫描出当前目录下的所有文件、目录及子目录的文件。
好我们再看看opendir与readdir遍历目录
代码如下 | 复制代码 |
<?php echo "<h2>目录为粉红色</h2><br>\n"; /*********************** |
好了大家都看到子glob与opendir与readdir遍历输入的写法了,从代码简洁上来说glob是完胜了opendir与readdir了,在功能实现上达到的是相同的效果呀,所以推荐使用glob函数遍历目录吧
我的这个功能的原因是参考dedecms生成html页面的原理,只是dedecms使用的是js跳转而我使用的是refresh进行跳转,效果是一样的,下面我们一起来看一个php实现批量导入数据的方法因为我有1000W数据一次导入数据库肯定是不可行了,所以我就导致了每一次导入50条或更多数据,然后下次再刷新一次这样就可以解决这个问题了,代码如下
代码如下 | 复制代码 |
<? $s = isset( $_GET['s'] )?$_GET['s']:0; if( $s < $count ) |
在PHP中,没有默认的Function来获取目前所在页面的URL,所以今天就向大家介绍一个在PHP获取当前页面完整URL的PHP函数
代码
函数代码如下,调用时只需要使用 curPageURL() 就行啦!
代码如下 | 复制代码 |
/* 获得当前页面URL开始 */ |
补充一下server参数说明
代码如下 | 复制代码 |
//获取域名或主机地址 //获取网页地址 //获取网址参数 //获取用户代理 //获取完整的url //包含端口号的完整url //只取路径 |
对于没有防盗链的图片
代码如下 | 复制代码 |
/* * 对于没有防盗链的图片 * $url 图片地址 * $filename 图片保存地址 * return 返回下载的图片路径和名称,图片大小 */ function GrabImage($url,$filepath,$filename="") { if($url=="") return false; $ext=strrchr($url,"."); if($filename=="") { if($ext!=".gif" && $ext!=".jpg" && $ext!=".png") return false; $filename=date("YmdHis"); } ob_start(); readfile($url); $img = ob_get_contents(); ob_end_clean(); $size = strlen($img); // 图片大小 !is_dir(getcwd().$filepath)? mkdir(getcwd().$filepath):null;//生成文件夹 $fp2=fopen(getcwd().$filepath.$filename.$ext, "a"); fwrite($fp2,$img); fclose($fp2); return array($filepath.$filename.$ext,$size); } |
有防盗链的图片
代码如下 | 复制代码 |
/* * 有防盗链的图片 * $url 图片地址 * $filename 图片保存地址 * return 返回下载的图片路径和名称,图片大小 * $fromurl 来源URL,填写来源图片网址可破解防盗链 */ function GrabImage2($url,$filepath,$filename="",$fromurl) { if($url=="") return false; $ext=strrchr($url,"."); if($filename=="") { if($ext!=".gif" && $ext!=".jpg" && $ext!=".png") return false; $filename=date("YmdHis"); } !is_dir(getcwd().$filepath)? mkdir(getcwd().$filepath):null;//生成文件夹 $re = $this->curlg($url,$fromurl); $size = file_put_contents(getcwd().$filepath.$filename.$ext,$re);//返回大小 return array($filepath.$filename.$ext,$size); } |
批量采集代码:
代码如下 | 复制代码 |
/** * 批量下载图片 */ public function downimg(){ $keep = $this->_get("keep");//1从缓存获取2删除缓存/重新缓存 $id = $this->_get("id"); $id = $id?$id:0; $nextid = $id+1; if($keep!=1){ $data = M('Cjlist')->where("status=1")->select(); S("keepcjdata",$data,3600); }else{ $data = S("keepcjdata"); } $endid= count($data); //echo $id; //echo $endid; if($endid==$id){ exit('所有图片下载完成!'); } //echo $endid; $data2['cover_imgurl'] = $this->imgdown2($data[$id]['cover_imgurl']); //echo $data[$id]['thum_url']; $data2['thum_url'] = $this->imgdown2($data[$id]['thum_url'],'thum_');//中型图片type $data2['id']=$data[$id]['id']; if(!$data2['thum_url'] || !$data2['cover_imgurl']){ $data2['status']=-1; }else{ $data2['status']=2; } $res = M('Cjlist')->save($data2); //$this->echosql(); if($res){ echo '下载完成ID:'.$data2['id']." 前往下一个ID下载<script>window.location.href='".U('Index/downimg')."/keep/1/id/".$nextid."'</script>"; }else{ echo '保存出错,正在重试刷新。<script>window.location.reload()</script>'; } //dump($data2); //dump($data); } |
同时还可以生成缩略图哦
代码如下 | 复制代码 |
/* |
相关文章
php 中file_get_contents超时问题的解决方法
file_get_contents超时我知道最多的原因就是你机器访问远程机器过慢,导致php脚本超时了,但也有其它很多原因,下面我来总结file_get_contents超时问题的解决方法总结。...2016-11-25- php如何实现抓取网页图片,相较于手动的粘贴复制,使用小程序要方便快捷多了,喜欢编程的人总会喜欢制作一些简单有用的小软件,最近就参考了网上一个php抓取图片代码,封装了一个php远程抓取图片的类,测试了一下,效果还不错分享...2015-10-30
- 相信很多站长都遇到过这样一个问题,访问页面时出现408错误,下面一聚教程网将为大家介绍408错误出现的原因以及408错误的解决办法。 HTTP 408错误出现原因: HTT...2017-01-22
- 下面我们来看一篇关于Android子控件超出父控件的范围显示出来方法,希望这篇文章能够帮助到各位朋友,有碰到此问题的朋友可以进来看看哦。 <RelativeLayout xmlns:an...2016-10-02
- ps软件是现在非常受大家喜欢的一款软件,有着非常不错的使用功能。这次文章就给大家介绍下ps把文字背景变透明的操作方法,喜欢的一起来看看。 1、使用Photoshop软件...2017-07-06
intellij idea快速查看当前类中的所有方法(推荐)
这篇文章主要介绍了intellij idea快速查看当前类中的所有方法,本文通过实例代码给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下...2020-09-02- 1.在没有设置默认值的情况下: 复制代码 代码如下:SELECT userinfo.id, user_name, role, adm_regionid, region_name , create_timeFROM userinfoLEFT JOIN region ON userinfo.adm_regionid = region.id 结果:...2014-05-31
js导出table数据到excel即导出为EXCEL文档的方法
复制代码 代码如下: <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html xmlns="http://www.w3.org/1999/xhtml"> <head> <meta ht...2013-10-13- 批量更新mysql更新语句很简单,更新一条数据的某个字段,一般这样写:复制代码 代码如下:UPDATE mytable SET myfield = 'value' WHERE other_field = 'other_value';如果更新同一字段为同一个值,mysql也很简单,修改下where即...2013-10-04
- ps软件是一款非常不错的图片处理软件,有着非常不错的使用效果。这次文章要给大家介绍的是ps怎么制作倒影,一起来看看设计倒影的方法。 用ps怎么做倒影最终效果̳...2017-07-06
- 本文涉及的主题虽然很基础,在许多人看来属于小伎俩,但在JavaScript基础知识中属于一个综合性的话题。这里会涉及到对象属性的封装、原型、构造函数、闭包以及立即执行表达式等知识。公有方法 公有方法就是能被外部访问...2015-11-08
安卓手机wifi打不开修复教程,安卓手机wifi打不开解决方法
手机wifi打不开?让小编来告诉你如何解决。还不知道的朋友快来看看。 手机wifi是现在生活中最常用的手机功能,但是遇到手机wifi打不开的情况该怎么办呢?如果手机wifi...2016-12-21- 最近想自学PHP ,做了个验证码,但不知道怎么搞的,总出现一个如下图的小红叉,但验证码就是显示不出来,原因如下 未修改之前,出现如下错误; (1)修改步骤如下,原因如下,原因是apache权限没开, (2)点击打开php.int., 搜索extension=ph...2013-10-04
- 单个字符分割 string s="abcdeabcdeabcde"; string[] sArray=s.Split('c'); foreach(string i in sArray) Console.WriteLine(i.ToString()); 输出下面的结果: ab de...2020-06-25
- javascript控制页面控件隐藏显示的两种方法,方法的不同之处在于控件隐藏后是否还在页面上占位 方法一: 复制代码 代码如下: document.all["panelsms"].style.visibility="hidden"; document.all["panelsms"].style.visi...2013-10-13
连接MySql速度慢的解决方法(skip-name-resolve)
最近在Linux服务器上安装MySql5后,本地使用客户端连MySql速度超慢,本地程序连接也超慢。 解决方法:在配置文件my.cnf的[mysqld]下加入skip-name-resolve。原因是默认安装的MySql开启了DNS的反向解析。如果禁用的话就不能...2015-10-21- 本篇文章是对C#方法进行了详细的总结与介绍,需要的朋友参考下...2020-06-25
- 步骤:Window -> PHP -> Editor -> Templates,这里可以设置(增、删、改、导入等)管理你的模板。新建文件注释、函数注释、代码块等模板的实例新建模板,分别输入Name、Description、Patterna)文件注释Name: 3cfileDescriptio...2013-10-04
- EXCEL数据上传到SQL SERVER中的方法需要注意到三点!注意点一:要把EXCEL数据上传到SQL SERVER中必须提前把EXCEL传到服务器上.做法: 在ASP.NET环境中,添加一个FileUpload上传控件后台代码的E.X: 复制代码 代码如下: if...2013-09-23
- mysql锁定单个表的方法 复制代码 代码如下:mysql>lock table userstat read; mysql>unlock tables; 页级的典型代表引擎为BDB。 表级的典型代表引擎为MyISAM,MEMORY以及很久以前的ISAM。 行级的典型代表引擎为INN...2014-05-31