递归函数调用没有按预期工作

时间:2017-08-10 14:16:06

标签: php

我尝试使用Twitter功能登录。

如果我的数据库中已存在twitter返回的用户名,我正在为该用户创建一个新的用户名。

以下是我的代码

class myclass{
    function getusername($username){
        global $db;
        $sql ="select * from us_signup where username ='".$username."'";
        echo $sql;
        $results = $db->rawQuery($sql);     

        if(!empty($results)){
        echo 'if';
        print_r($username);
            $username = $username.rand(0,1000);
            $this->getusername($username);
        }else{
        echo "else";
        print_r($username);
            return $username;
        }
    }

    function insertintodb(){
        echo "oldusername : ".$username;
        $username = $this->getusername($username);
        echo "newusername : ". $username;   
    }

}

1)insertintodb调用getusername,其中currentusername来自twitter

2)getusername在数据库中检查它

3)如果用户名存在于数据库中,那么它会向其添加一个随机数,然后自行调用

4)如果用户名不存在于数据库中,则返回用户名

5)getusername调用自己,直到找到数据库中不存在的用户名

我的问题是

我正在使用' sugumar'来调用函数getusername。存在于数据库中 所以它再次使用newusername' sugumar1234'(1234是一个随机数可以是任意数字)。 ' sugumar1234'不存在于数据库中,因此我希望它返回' sugumar1234'但它什么都不返回

打印输出后

  

oldusername:sugumarselect * from us_signup where username   =' sugumar' ifsugumarselect *来自us_signup,其中username =' 1234' else1234newusername:

1 个答案:

答案 0 :(得分:3)

如果我理解正确,代码的return部分似乎缺少if语句。

$this->getusername('1234');

应该是

return $this->getusername('1234');