php - 如何让程序错误后 再执行一次
PHP中文网
PHP中文网 2017-04-11 09:47:44
[PHP讨论组]

我用随机数作为用户名,用户名是不能重复的,但是随机数也有可能重复(概率不考虑)

那么,如何让程序运行之后,发现重复了,自动重试一次呢?如果第二次再重复(或失败)的话就
让他停止运行?


function add()
{ 
   $name = '';
   for ($i=0; $i < 10; $i++) { 
      $name .= mt_rand(0,9);   
   }     
   //$sql = "insert into user ('name') values($name)";
    $PDO->exet($sql);   
    if(!$res){
        //重试???
    } 
}

PHP中文网
PHP中文网

认证高级PHP讲师

全部回复(6)
高洛峰

嗯...用递归可以吗?

function add($number = 1)
{ 
   
   $name = '';
   for ($i=0; $i < 10; $i++) { 
      $name .= mt_rand(0,9);   
   }     
   //$sql = "insert into user ('name') values($name)";
    $PDO->exet($sql);   
    if(!$res){
        // 第一次调用add方法 生成rand 失败则再调用一下自身
        // 第二次失败的话 就返回FALSE
        if($number == 1) $this->add(2);
        else return FALSE;
        
    } 
}
PHPz

1、你这个情况,应该在生成随机数以后立即检查此随机会是否可用吗,如果可用才进行数据库插入工作的。
而不是让程序出错了再执行。
2、简单的使用$name .= mt_rand(0,9)来生成随机数,这个出现重复的机率会很高,尤其在你网站有一定访问量的情况下,非常非常不建议你这样子做。

ringa_lee

1。把需要重复执行的代码提取出来做一个独立的方法,这样就能重复调用了

2。使用跳转标签

PHPz

可以使用php的异常来实现,当发生错误时,主动抛出一个异常,利用try...catch来捕获异常,当捕获后再次重试,如果还是发生异常,可以exit()或者die()

巴扎黑

设置个变量counter计数保存出错次数。 代码块加异常处理try catch. catch里:

if(counter==0)
{
    counter+=1; 
    //可以写个错误信息到日志
}
else
{
    //退出程序
}
阿神

逻辑问题啊, 先看用户名有没有重复啊, 不用先插入如果插入不进去才重试啊,

热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板
关于我们 免责申明 举报中心 意见反馈 讲师合作 广告合作 最新更新 English
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送
PHP中文网APP
随时随地碎片化学习

Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号