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

发布于 2024-12-16 11:20:03 字数 764 浏览 1 评论 0原文

我正在开发一个 WordPress 插件,我试图在向表中添加一行时生成一个唯一的“pin”。引脚必须是数字字符串(8 个字符,但这并不重要)。该表将保存一些用户数据和日期。

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

我使用 mt_rand 检查“pin”,然后检查数据库以查看该 pin 是否存在(它必须是唯一的)。我想我需要做一个for循环,但我很挣扎(只使用过foreach lopps)

到目前为止我有这个,但我知道这是不对的(它可以工作,但我会多个嵌套的if,它将受到适当的 if 数量):

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

任何人都可以看到我正在尝试做什么吗?

请帮忙。

I am working on a WordPress plugin and I am trying to generate a unique "pin" when adding a row to the table. The pin needs to be a number string (8 chars but that's not important). The table will save some user data and dates.

But what I am struggling with is making sure I have a unique pin before inserting the row. So far I have tried using an if statement, but that will only work if the random pin is matched once.

I'm using mt_rand to check the "pin" and then checking the DB to see if this pin exists (it must be unique). I think I need to do a for loop, but I struggling (only ever used foreach lopps)

So far I have this, but I know it's not right (it could work, but I would multiple nested ifs and it would be limited by the amount of ifs in place):

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

Can anyone see what I'm trying to do?

Help please.

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

再浓的妆也掩不了殇 2024-12-23 11:20:03

您需要使用 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

You need to use a while loop, something like that:

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
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文