php mysql 随机 不重复数据_php mysql 批量生成数据库中卡号不重复的办法,不需要一个一个验证卡号是否存在...

已知,

1.卡号是五位数,无规则生成的数字形式。

2.数据库已有不详数量的卡号记录。

之前的做法是,生成一个,查询一个,但是数量多的时候回出现卡顿。或者超过30秒。

解决代码

if(isset($_POST['act'])&&$_POST['act']=='adds'){

$sql="insert into tb_member(MembCode,SourceStoreId,IsCheck) values";

$num_old = (int)$_POST['num'];

if($num_old<=10){

$num_new = 15;

}

if($num_old>10){

$num_new = $num_old*1.5;

$num_new = intval($num_new);

}

for($i=0;$i

getnewmembcodenew();

}

//把获取到的卡号数组分割成为本,拼接成in查询语句,取出相同卡号的数据

$member_code_str = implode("','",$MembCodes);

$member_code_str = "'".$member_code_str."'";

$member_code_str_sql = "select MembCode from tb_member where MembCode in (".$member_code_str.")";

$getnum=$Cls->getList($member_code_str_sql);

foreach ($getnum as $k=>$v){

$member_arr []= $v['MembCode'];

}

//把重复的去掉,并且取出需要的数量

$MembCodes = array_diff($MembCodes,$member_arr);

$MembCodes=array_slice($MembCodes,0,$num_old);

//拼接插入语句

foreach ($MembCodes as $v){

$sql.="('$v',$StoreId,1),";

}

$sql=trim($sql,',');

$is_ok=$Cls->Query($sql);

}

//卡号生成部分代码

$MembCodes=array();

function getnewmembcodenew(){

global $Cls,$MembCodes;

$rmcodes=mt_rand('10000','99999');

$MembCodes[]=$rmcodes;

return $rmcodes;

}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值