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

 您是漂亮女人807 发布于 2022-11-30 11:43

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

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

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

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

    2022-11-30 13:18 回答
  • 1。把需要重复执行的代码提取出来做一个独立的方法,这样就能重复调用了

    2。使用跳转标签

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

    2022-11-30 13:18 回答
  • 设置个变量counter计数保存出错次数。 代码块加异常处理try catch. catch里:

    if(counter==0)
    {
        counter+=1; 
        //可以写个错误信息到日志
    }
    else
    {
        //退出程序
    }
    2022-11-30 13:18 回答
  • 逻辑问题啊, 先看用户名有没有重复啊, 不用先插入如果插入不进去才重试啊,

    2022-11-30 13:18 回答
撰写答案
今天,你开发时遇到什么问题呢?
立即提问
热门标签
PHP1.CN | 中国最专业的PHP中文社区 | PNG素材下载 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有