Random 使用mysql创建唯一的发票编号并使用
目前,这是我创建一个随机唯一发票号码的函数,该号码存储在表单的隐藏字段中Random 使用mysql创建唯一的发票编号并使用,random,unique,invoice,Random,Unique,Invoice,目前,这是我创建一个随机唯一发票号码的函数,该号码存储在表单的隐藏字段中 function generate_invoice_number() { global $wpdb; $lastVisitor = $wpdb->get_results("SELECT visitorID FROM event_visitors_2014 ORDER BY visitorsID DESC LIMIT 1", ARRAY_A); $nr_last = $lastVisitor[0
function generate_invoice_number() {
global $wpdb;
$lastVisitor = $wpdb->get_results("SELECT visitorID FROM event_visitors_2014 ORDER BY visitorsID DESC LIMIT 1", ARRAY_A);
$nr_last = $lastVisitor[0]['visitorID'];
$nr = 501 + $nr_last;
$value = sprintf( '%04d', $nr );
$number = 'LEDEXPO'.date('Y').'-'.uniqid().'-'.$value;
return $number;
}
我有一个问题,当多个人同时使用表单时,比如说3个人使用他们都有相同号码的表单。
所以我添加了uniqid(),所以$value可以复制,但是$number应该是唯一的?这是正确的还是有更好的方法
如何使测试函数在唯一性上测试此函数
关于试试这个:
function generate_invoice_number()
{
global $wpdb;
$lastVisitor = $wpdb->get_results("SELECT visitorID FROM event_visitors_2014 ORDER BY visitorsID DESC LIMIT 1", ARRAY_A);
$nr_last = $lastVisitor[0]['visitorID'] + 1;
$number = date('Ymd') . $nr_last;
return $number;
}
插入记录前是否需要唯一id。通常,让DB创建唯一的ID,然后让程序重新格式化是一个更好的主意。UUID被设计成具有极强的抗冲突能力。@user2310289,是的,我认为在插入之前。我需要最后3个数字从500开始。我在表单提交时发送了一封电子邮件,这就是为什么我还生成了一份带有数字的.pdf发票,该数字附在电子邮件中。@Idrumm,UUID?我需要仔细阅读这篇文章tx@alex你已经在使用它们了。这只是对
uniqid()
将提供给您的内容的一个不同术语。编辑:我错了,请看这篇文章,但这不是必需的,因为visitorID在mysql端是自动递增的。“visitorID”列的数据类型是什么?您创建visitorID的逻辑是什么?visitorID是INT,我正在使用它创建“唯一”发票编号尝试以下操作:$number=date('ymdhis')。$lastVisitorid[0]['visitorID']