在添加新内容之前,PHP检查数据库是否有重复数字

时间:2011-11-18 11:46:02

标签: wordpress select for-loop wpdb

我正在处理一个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

任何人都能看到我想要做的事吗?

请帮助。

1 个答案:

答案 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