我正在寻找一个 php 脚本,它可以为我的项目生成一个唯一的 10 位数字(数字)。
我对Php知之甚少,这是我的代码,请帮忙。
此处的代码是生成随机 pin 并存储在数据库表 lucky_coupon_pins 中。
<小时/>//检查生成按钮
if (isset($_POST['generate_pin'])) {
//生成随机数
$random_number=mt_rand();
//生成代码后检查它是否存在于表中,如果存在则再次生成,否则继续
$row_count = $db->row_count("SELECT * FROM " . config_item('cart', 'table_lucky_coupon_pins') . " WHERE lucky_pin = '" . $random_number . "'");
if($row_count>0)
{
$random_number=mt_rand();
$row_count = $db->row_count("SELECT * FROM " . config_item('cart', 'table_lucky_coupon_pins') . " WHERE lucky_pin = '" . $random_number . "'");
}
//插入数据库
$values = array(
'lucky_pin' => $random_number,
'lucky_pin_value' => $_POST['lucky_pin_value']
);
$db->insert(config_item('cart', 'table_lucky_coupon_pins'), $values);
<小时/>
在这里,我检查生成的 pin 一次,如果它已经存在,则会生成另一个 pin。我不知道这个唯一性有多远,而且生成的 pin 有时是 9 位数字,有时是 10 位数字。
最佳答案
如 manual 中所述mt_rand() 采用两个参数,一个最小值和一个最大值,因此要获取 10 位随机值,请使用:
$random_number = mt_rand(1000000000, 9999999999);
或
$random_number = mt_rand(1,9);
for ($i = 0; $i < 9; $i++) {
$random_number .= mt_rand(0,9)
}
它是独一无二的吗?事实上,这种可能性很大,但也不确定。 (如果它已经存在,您只需检查一次。)您可以考虑使用循环,例如
$row_count = 1;
while ($row_count > 0) {
$random_number = mt_rand(1000000000, 9999999999); // i prefer the other option but this one is somehow shorter
$row_count = $db->row_count("SELECT * FROM " . config_item('cart', 'table_lucky_coupon_pins') . " WHERE lucky_pin = '" . $random_number . "'");
}
关于php - 在 PHP MYsql 中生成 E-pin 或随机唯一编号,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17765484/