我有一个生成推荐代码和功能的功能。然后通过将引用代码与数据库匹配然后完成用户注册来检查引用代码的唯一性。但我的问题是,在生成代码后,如果系统发现重复,那么它需要再次重新生成。怎么做? 以下是代码:
// Referral Code Generator
function genRandomString() {
$length = 5;
$characters = '0123456789abcdefghijklmnopqrstuvwxyz';
$string = '';
for ($p = 0; $p < $length; $p++) {
$string .= $characters[mt_rand(0, strlen($characters))];
}
return $string;
}
注册码片段:
//---Ref code
$ref_code = genRandomString();
//checking if the referral code is unique or not.
$stmt_rcode=$mysqli->query("SELECT ref_id FROM client WHERE ref_id = ?");
$stmt_rcode->bind_param('s',$ref_code);
$stmt_rcode->execute();
$stmt_rcode->store_result();
// if ref code is unique then only run the whole sign up process.
if(!$stmt_rcode->num_rows == 1){
// Complete the registration process here
}
如果$ stmt_rcode-&gt; num_rows == 1那么我需要再次重新生成ref代码。怎么做?
更新 对于生成引用代码:我使用了以下代码,它可以更快地完美运行。
$test = substr(base_convert(sha1(uniqid(mt_rand())), 16, 36), 0, 5);
因为我使用ref_id作为唯一键。所以显然用户在相同值的情况下会收到错误。然后用户只需要重新加载页面即可重新生成。到目前为止,这是我如何使它暂时工作。