PHP 在添加新数字之前检查数据库是否有重复的数字
我正在开发一个 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 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(1)
您需要使用 while 循环,如下所示:
You need to use a while loop, something like that: