我一直在尝试更改验证脚本的一些代码,以便它不包含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”。如果没有相似的值,函数工作正常,所以我认为函数递归存在问题。我不认为我真的知道如何正确使用它,所以请继续教育我。
干杯。
灰粉
答案 0 :(得分:2)
您忘记返回递归的结果。
return gen_val($val+1);
答案 1 :(得分:1)
如果我错了,请纠正我,但你想为每个用户获取一个唯一的ID。 MySQL有此功能。