php - 如何在 PHP 和 mySQL 中创建票证引用号

标签 php mysql ticket-system

我正在使用 PHP 和 mySQL 开发票务系统。 我有一个表 support,其中 id 作为我的主键和 AI。

我想添加 ticket_number,以便在提交工单时为每张工单分配一个唯一的编号。我不能使用 mySQL 来 AI 第二个字段,对吗?

如果我给第一张票一个号码,然后编写一个查询来查找数据库中的最后一个ticket_number,那么我正在考虑做类似的事情:

$ticket = 1;
$next = $ticket+1;
echo "ticket number: #".$next;

这行得通还是有更好的方法?

最佳答案

根据 MonkeyZeus 的建议,您需要退一步并重新思考您的架构。

您希望拥有通过单个 ID(票号)链接在一起的多行(回复)。

您肯定希望此 ID 成为另一个表中的行的 ID。

所以你应该有两个表:

  • 一张门票
  • 另一个回复

第一个将能够保存特定于票证的数据,包括票证的状态(打开、关闭...)、分配给谁(用户的 ID)、创建票证的人(同样,一个 id),以及可能的打开和关闭时间(尽管这可以通过其他方式推断)。

第二个将保存特定于您票证中每个条目的数据(初始消息以及随后的来回回复)。

您还可能有其他表(或者可能与回复相同)用于其他类型的操作(工单状态更改、子工单创建等)。

门票将有一个唯一的ID,您可以将其用作票号(可能带有某种前缀,可能以某种方式重新格式化)。

回复将有一个唯一的ID(当您想要将文件附加到回复或编辑它时,这将很有用)以及与其关联的票证的ID。

让Mysql创建ID。使用您喜欢的语言的 API 获取最后插入的行的 ID。

  • 请勿根据服务器返回的最大 ID 增加客户端 ID。竞争条件迫在眉睫。
  • 请勿使用客户端生成且不保证唯一的 ID

关于php - 如何在 PHP 和 mySQL 中创建票证引用号,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39101543/

相关文章:

api - 如何使用 Softlayer 的票证 API 应用过滤器?

php - 在 MacOS Sierra 10.12.1 上安装/卸载 Apache2

java - 在php中创建JSONArray并将其发送到android

php - 执行 if/else 语句的 Javascript 和 PHP

php - 在 PHP 中使用 MySQL 查询时,这有那么糟糕吗?

java - 无法将多个数据插入数据库

php - 无法使用codeigniter在Mysql中插入数据

mysql - 多个不同的计数与 where

asp.net - 制作典型的Housie/Bingo游戏门票的过程复杂吗?