如何让程序错误后 再执行一次

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

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


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){
        //重试???
    } 
}

阅读 5.8k
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;
        
    } 
}

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

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

2。使用跳转标签

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

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

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

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

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题