私は PHP を学んでいて、while と continue 式を正しく使用しようとしています。
6 桁の PIN を作成するスクリプトがあり、それが一意であることを確認したいのですが、それ以外の場合は別の PIN を生成したいと考えています。
while(1) {
$pin = rand(111111,999999);
$sel = mysql_query("SELECT * FROM formusers WHERE pin = '$pin'");
if(mysql_num_rows($sel) != 0) { continue; }
mysql_query("INSERT INTO formusers(email,password,pin) VALUES('".$_POST['srEmail']."','".$_POST['srPass']."','".$pin."')");
if(mysql_affected_rows()!=-1) {
echo "Pin:" . $pin;
exit;
} else {
echo "Existing email, try again<br />";
}
break;
}
ループの構文は正しいですか? 動作しているように見えますが、rand() 関数が同じ PIN を 2 回作成するインスタンスでデバッグする方法はありません。
また、固有の PIN を使い果たした場合、ここではどうなりますか? おそらくそれは無期限にループするでしょうか?これを防ぐ方法はありますか?