我正在处理一个WordPress插件,我正在尝试在向表中添加一行时生成一个唯一的“引脚”。引脚需要是一个数字字符串(8个字符,但这并不重要)。该表将保存一些用户数据和日期。
但我正在努力的是确保在插入行之前我有一个独特的针脚。到目前为止,我已尝试使用if语句,但只有在随机引脚匹配一次时才会起作用。
我正在使用mt_rand检查“pin”,然后检查DB以查看该引脚是否存在(它必须是唯一的)。我想我需要做一个for循环,但我挣扎(只使用过foreach lopps)
到目前为止,我有这个,但我知道它不对(它可以工作,但我会多个嵌套的ifs,它会受到ifs数量的限制):
function pin_generator_create_pin(){
global $wpdb;
$pin = mt_rand(109076, 999999);
if(!$wpdb->get_var("SELECT * FROM ".PIN_GENERATOR_TABLE." WHERE pin=".$pin)){
return $pin;
}else{
$pin = mt_rand(109076, 999999);
if(!$wpdb->get_var("SELECT * FROM ".PIN_GENERATOR_TABLE." WHERE pin=".$pin)){
return $pin;
}
}
}//function
任何人都能看到我想要做的事吗?
请帮助。
答案 0 :(得分:0)
您需要使用while循环,类似:
function pin_generator_create_pin(){
global $wpdb;
$pin = 0;
$pinExists = true;
while ($pinExists) {
$pin = mt_rand(109076, 999999);
if(!$wpdb->get_var("SELECT * FROM ".PIN_GENERATOR_TABLE." WHERE pin=".$pin))
$pinExists = false;
}
return $pin;
}//function