我正在使用PHP和mySQL的票务系统。
我有一个support
表id
作为我的主键和AI。
我想添加ticket_number
,以便在提交故障单时为每个故障单分配一个唯一的号码。我无法将mySQL用于AI第二个领域,对吗?
如果我给第一张票一个号码,然后写一个查询来查找数据库中的最后一个ticket_number
,那么我正在考虑做类似的事情:
$ticket = 1;
$next = $ticket+1;
echo "ticket number: #".$next;
这会有用还是有更好的方法?
答案 0 :(得分:1)
根据MonkeyZeus的建议,您需要退后一步并重新考虑您的架构。
您希望有多个行(回复)通过单个ID(票号)链接在一起。
您肯定希望此ID成为另一个表中行的ID。
所以你应该有两张桌子:
tickets
replies
第一个将能够保存特定于故障单的数据,包括故障单的状态(打开,关闭......),分配给谁(用户的ID),创建故障单的人(再次,一个id),也可能是当它被打开和关闭时(虽然这可以通过其他方式推断)。
第二个将保存特定于票证中每个条目的数据(初始消息,以及随后的回复)。
对于其他类型的操作(更改了故障单状态,创建了子故障单等),您可能还有其他表(或者可能与replies
相同)。
tickets
将有一个唯一的ID,你可以使用它作为票号(可能带有某种前缀,可能以某种方式重新格式化)。
replies
将具有唯一ID(当您要将文件附加到回复或编辑时非常有用)以及与其关联的故障单的ID。
让Mysql创建ID。使用您最喜欢的语言API获取最后插入的行的ID。
答案 1 :(得分:0)
要获得一个好的和唯一的ID,您可以获得更好的解决方案:
unique = true
functionnality的额外列和请求获取此列的最大值并在新插入之前增加代码答案 2 :(得分:0)
我决定调整@Himanshu kumar的答案如下(因为它解决了我的区域问题),以使用用户的ID和时间戳(我已经使用了两个)门票号码:
$user_id = 7; //example from session variable
$cur_date = date('dmyHis'); //timestamp ticket submitted
$ticket = '#'.$user_id.'-'. $cur_date;
这将创建一个具有用户ID和日期和时间的唯一变量。我用了几秒钟让它变得更加独特。然后,我将使用查询来查找此票证的所有消息/票证。
答案 3 :(得分:0)
答案 4 :(得分:-1)
您可以通过以下代码实现。它每次都会生成唯一的票号
$brand = '#ref';
$cur_date = date('d').date('m').date('y');
$invoice = $brand.$cur_date;
$customer_id = rand(00000 , 99999);
$uRefNo = $invoice.'-'.$customer_id;
echo $uRefNo;