PHP使用UPDATE批量更新MYSQL数据库记录的疑问
do{$iccid=trim($row['card_iccid']);$msg='<GetTerminalDetailsRequestxmlns="'.$JASPER_U...
do{
$iccid=trim($row['card_iccid']);
$msg =
'<GetTerminalDetailsRequest xmlns="'.$JASPER_URI.'">'.
'<messageId></messageId>'.
'<version>1.0</version>'.
'<licenseKey>'.$licenseKey.'</licenseKey>'.
'<iccids>'.
'<iccid>'.$iccid.'</iccid>'.
'</iccids>'.
'</GetTerminalDetailsRequest>';
$t = $service->call('GetTerminalDetails', $msg);
$ins_card_iccid=$t['terminals']['terminal']['iccid'];
$ins_card_status=$t['terminals']['terminal']['status'];
$ins_card_customer=explode("M",$t['terminals']['terminal']['customer']);
$ins_card_active_time=substr($t['terminals']['terminal']['dateActivated'],0,10)." ".substr($t['terminals']['terminal']['dateActivated'],11,8);
$ins_card_currusage=(int)$t['terminals']['terminal']['monthToDateDataUsage'];
$ins_rest_flow=$ins_card_customer[0]-$ins_card_currusage;
//更新前检查是否存在ICCID
$pre_query_sql="select * from tb_warehouse_card where card_iccid='".$ins_card_iccid."'";
$pre_result=mysql_query($pre_query_sql);
$pre_rows=mysql_num_rows($pre_result);
if($pre_rows<=0)
$do_nothing=0;
else{ //iccid存在,更新对应数据
$update_card_sql="update tb_warehouse_card set card_status='".$ins_card_status."',card_packge='".$ins_card_customer[0]."',enable_time='".$ins_card_active_time."',curr_usage=".$ins_card_currusage.",card_rest_flow=".$ins_rest_flow." where card_iccid='".$ins_card_iccid."'";
mysql_query($update_card_sql);
$msg2="更新 ".$ins_card_iccid." ".date("Y-m-d H:i:s")."\r\n";
file_put_contents("log/".date("Y-m-d").".log",$msg2,FILE_APPEND);//记录日志
}
}while($row=mysql_fetch_array($exe_result));
mysql_close($conn);
sleep($interval);//等待时间,进行下一次操作。
}while(true);
目的是为了从接口获取这个ICCID变量的信息,再更新到对应ICCID的行,表里有10万行数,无论我怎么修改语句都只能更新大概2000多条
ignore_user_abort(true);//关闭浏览器仍然执行
set_time_limit(0);//让程序一直执行下去
$interval=300;//每隔一定时间运行
页面时间我也加上了,是不是MYSQL数据库性能的事 展开
$iccid=trim($row['card_iccid']);
$msg =
'<GetTerminalDetailsRequest xmlns="'.$JASPER_URI.'">'.
'<messageId></messageId>'.
'<version>1.0</version>'.
'<licenseKey>'.$licenseKey.'</licenseKey>'.
'<iccids>'.
'<iccid>'.$iccid.'</iccid>'.
'</iccids>'.
'</GetTerminalDetailsRequest>';
$t = $service->call('GetTerminalDetails', $msg);
$ins_card_iccid=$t['terminals']['terminal']['iccid'];
$ins_card_status=$t['terminals']['terminal']['status'];
$ins_card_customer=explode("M",$t['terminals']['terminal']['customer']);
$ins_card_active_time=substr($t['terminals']['terminal']['dateActivated'],0,10)." ".substr($t['terminals']['terminal']['dateActivated'],11,8);
$ins_card_currusage=(int)$t['terminals']['terminal']['monthToDateDataUsage'];
$ins_rest_flow=$ins_card_customer[0]-$ins_card_currusage;
//更新前检查是否存在ICCID
$pre_query_sql="select * from tb_warehouse_card where card_iccid='".$ins_card_iccid."'";
$pre_result=mysql_query($pre_query_sql);
$pre_rows=mysql_num_rows($pre_result);
if($pre_rows<=0)
$do_nothing=0;
else{ //iccid存在,更新对应数据
$update_card_sql="update tb_warehouse_card set card_status='".$ins_card_status."',card_packge='".$ins_card_customer[0]."',enable_time='".$ins_card_active_time."',curr_usage=".$ins_card_currusage.",card_rest_flow=".$ins_rest_flow." where card_iccid='".$ins_card_iccid."'";
mysql_query($update_card_sql);
$msg2="更新 ".$ins_card_iccid." ".date("Y-m-d H:i:s")."\r\n";
file_put_contents("log/".date("Y-m-d").".log",$msg2,FILE_APPEND);//记录日志
}
}while($row=mysql_fetch_array($exe_result));
mysql_close($conn);
sleep($interval);//等待时间,进行下一次操作。
}while(true);
目的是为了从接口获取这个ICCID变量的信息,再更新到对应ICCID的行,表里有10万行数,无论我怎么修改语句都只能更新大概2000多条
ignore_user_abort(true);//关闭浏览器仍然执行
set_time_limit(0);//让程序一直执行下去
$interval=300;//每隔一定时间运行
页面时间我也加上了,是不是MYSQL数据库性能的事 展开
1个回答
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询