在导入Excel表时,怎样去检查Mysql数据库里是否已经存在了呢?
只有一个字段“Code”,之前写过一次代码,是每导一条记录就查询一次Mysql,如果有几千条就得查询几千次mysql。
就想能不能将要查询的字段,提前将查询结果生成集再去判断,结果弄了老半天都没结果(新手上路)。
请大神们指点,下面是主要的代码。$datetime=date("Y-m-d H:i:s");
$ipmnuml=0; //重复记录数
$ipmdenuml=0; //插入记录数$sql=mysql_query("select Code from test ",$conn);
$sqlvalue = mysql_fetch_array($sql);for ($i=2; $i<=$xls->sheets[0]['numRows']; $i++) {
//循环Excel表中的内容
$name = $xls->sheets[0]['cells'][$i][1]; $name = strtoupper(trim($name)); //要插入的内容foreach( $sqlvalue as $value){
if(in_array($value,$name)){
$ipmdenuml++;
}else{
$ipmnuml++;
$data_values .= "('$name','$datetime'),";
}
}
ob_flush();
flush();
}$data_values = substr($data_values,0,-1); //去掉最后一个逗号
$query = mysql_query("insert into test (Code,Datetime) values $data_values");//批量插入数据表中
$insert_num=mysql_affected_rows();
只有一个字段“Code”,之前写过一次代码,是每导一条记录就查询一次Mysql,如果有几千条就得查询几千次mysql。
就想能不能将要查询的字段,提前将查询结果生成集再去判断,结果弄了老半天都没结果(新手上路)。
请大神们指点,下面是主要的代码。$datetime=date("Y-m-d H:i:s");
$ipmnuml=0; //重复记录数
$ipmdenuml=0; //插入记录数$sql=mysql_query("select Code from test ",$conn);
$sqlvalue = mysql_fetch_array($sql);for ($i=2; $i<=$xls->sheets[0]['numRows']; $i++) {
//循环Excel表中的内容
$name = $xls->sheets[0]['cells'][$i][1]; $name = strtoupper(trim($name)); //要插入的内容foreach( $sqlvalue as $value){
if(in_array($value,$name)){
$ipmdenuml++;
}else{
$ipmnuml++;
$data_values .= "('$name','$datetime'),";
}
}
ob_flush();
flush();
}$data_values = substr($data_values,0,-1); //去掉最后一个逗号
$query = mysql_query("insert into test (Code,Datetime) values $data_values");//批量插入数据表中
$insert_num=mysql_affected_rows();
不过看代码就很奇怪了,in_array($value,$name)是什么意思?
循环excel的数据,判断是否在数据库的结果集就好了。in_array($name,$sqlvalue)不就完事了吗
试过用in_array($value,$name),但是还是判断不出来,感觉像是没有拿到结果集。
$sql=mysql_query("select Code from test ",$conn);
while($row = mysql_fetch_array($sql)){
$hash[$row['Code']]=1;
}
for ($i=2; $i<=$xls->sheets[0]['numRows']; $i++) {
//循环Excel表中的内容
$name = $xls->sheets[0]['cells'][$i][1];
$name = strtoupper(trim($name)); //要插入的内容
$hash[$name]+=1;
if($hash[$name]==1){
$data_values .= "('$name','$datetime'),";
}
}
$data_values = substr($data_values,0,-1); //去掉最后一个逗号
$query = mysql_query("insert into test (Code,Datetime) values $data_values");//批量插入数据表中
$insert_num=mysql_affected_rows();