2011-11-18 42 views
0

我正在一个WordPress插件,我试图生成一个独特的“引脚”时添加一行到表中。该引脚需要是一个数字字符串(8个字符,但这不重要)。该表将保存一些用户数据和日期。PHP检查数据库的重复数字前添加新

但是我正在努力的是确保在插入行之前我有一个独特的引脚。到目前为止,我已经尝试使用if语句,但只有在随机引脚匹配一次的情况下才有效。

我使用mt_rand检查“引脚”,然后检查数据库以查看此引脚是否存在(它必须是唯一的)。我想我需要做一个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

你需要使用一个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 
+0

这是完美的,exactley是我需要的。 – user1053700

相关问题