用函数替换goto,为什么这不起作用?

时间:2011-05-08 05:40:25

标签: php

我一直在尝试更改验证脚本的一些代码,以便它不包含goto,因为我想在webhost上运行我的脚本,不幸的是,大多数代码并没有真正拥有5.3或更高版本。

该代码旨在使用rand生成的值作为唯一的验证号。如果它发现它已经在数据库中,它会在数字上追加1次,直到找到可用的数字为止。非常直截了当。我知道这是一个MySQL查询的糟糕做法,但它实际上只是一个简单的练习脚本。

代码如下:

function gen_val($val)
{
    $query = mysql_query("SELECT val_id FROM users_tmp WHERE val_id=$val");
    $row = mysql_fetch_array($query);
    if ($row[0]==$val) {
        gen_val($val+1);
    } else {
        return $val;
    }
}

$val_x=gen_val(rand());

如果数据库中已存在该值,则返回值“0”。如果没有相似的值,函数工作正常,所以我认为函数递归存在问题。我不认为我真的知道如何正确使用它,所以请继续教育我。

干杯。

灰粉

2 个答案:

答案 0 :(得分:2)

您忘记返回递归的结果。

return gen_val($val+1);

答案 1 :(得分:1)

如果我错了,请纠正我,但你想为每个用户获取一个唯一的ID。 MySQL有此功能。