1.文件的读出和MySQL的写入:
在项目之中,有需要用到从Excel读数据写入MySQL的,由于数据是很多个记录,其中又需要用到检测,一开始采取的策略是读一条记录,检测符合条件就写一条记录。
由于有时需要写1W条记录之多,于是被测试嫌导入太慢。
后来改变策略,现将全部符合条件的记录读出来,然后再用thinkPHP的addAll函数一并写入数据库,速度大大加快。修改后的代码如下:
<pre name="code" class="php">$ExcelToArrary=new ExcelToArrary();//实例化
$res=$ExcelToArrary->read($savePath.$file_name,"UTF-8",$file_type);//传参,判断office2007还是office2003
//print_r($res);die;
$number=0;
foreach ( $res as $k => $v ) //循环excel表
{
if(strlen($v[1])==11){
$check1=substr($v[1],0,2);
$check2=substr($v[1],0,3);
if($check1=="13"||$check2=="145"||$check2=="147"||$check1=="15"||$check1=="18") $exitflag1=1;
else $exitflag1=0;
$exitflag=$assigntoman->where(array('phone'=>$v[1]))->find();
if(!$exitflag&&$exitflag1){
// $k=$k-1;//addAll方法要求数组必须有0索引
$data[$number]['clientname'] = $v[0];//创建二维数组
$data[$number]['phone'] = $v[1];
$data[$number]['managerID'] = $_GET['id'];//创建二维数组
$data[$number]['agentID'] = $agent['id'];//创建二维数组
//$kucun=M('assigntoman');//M方法
//$result=$kucun->add($data);
//echo $kucun->getLastsql();
$number++;
}
}
}
$result=$kucun->addAll($data);
2.客户要求登录账户不验证大小写。
一开始Google,网上说MySQL查询默认是不识别大小写的,但我在phpMyAdmin用sql语句,发现一直都是识别大小写的。
后来经大神指点,才知道是编码的问题。
一开始我用的是utf8_bin,是识别大小写的,改用utf8_general_ci就顺利解决问题了