Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/231.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
避免php中id的重复_Php_Duplication - Fatal编程技术网

避免php中id的重复

避免php中id的重复,php,duplication,Php,Duplication,我有一个基于php浏览器的应用程序,用于医院管理系统。目前的情况是,共有3个部门进行付款,即接待部、实验室和药房。上面每个位置的工人都是不同的,他们的输入也是不同的。这些部门中的每一个都向一个名为receipts的表发送一个收据信息,从而生成一个ID,该ID是该表最后一个ID之后的下一个ID。数据将基于此ID(根据表中最后一个ID生成)发送回同一部门 现在,当两个部门同时单击submit按钮时,就会出现问题。这两个人都获得相同的ID,因为当时两个查询的最后一个ID是相同的。这将导致存储数据和向部

我有一个基于php浏览器的应用程序,用于医院管理系统。目前的情况是,共有3个部门进行付款,即接待部、实验室和药房。上面每个位置的工人都是不同的,他们的输入也是不同的。这些部门中的每一个都向一个名为receipts的表发送一个收据信息,从而生成一个ID,该ID是该表最后一个ID之后的下一个ID。数据将基于此ID(根据表中最后一个ID生成)发送回同一部门

现在,当两个部门同时单击submit按钮时,就会出现问题。这两个人都获得相同的ID,因为当时两个查询的最后一个ID是相同的。这将导致存储数据和向部门发回数据时出现问题

现在有解决办法吗?有人告诉我触发器可以解决这个问题,但我不想让它变得简单。我曾想过随机生成ID,但医院的人想要连续的ID,因为它会出现在收据上。 还应考虑到系统不应(大幅)减速

编辑:哎呀,这里似乎有更多的信息,因此自动增量不起作用。 有3个列要考虑。ID(pKEY)、收件人和DEBITNO。 现在,如果此人同时付款,则id和receiptno将一起增加1,debitno将为空。但是如果他打算稍后付款,那么他的receiptno将为空,而他的ID和debitno将从最后输入的ID增加1。 因此,无需填写receiptno(将发送回部门人员),因此自动增量将不起作用,是否正确?
再次感谢各位提供的解决方案esp autoincrement。

为ID列使用
AUTO_INCREMENT
(MySQL)字段,以便数据库负责生成唯一的ID。其他数据库系统也有类似的字段,例如PostgreSQL中的
serial
字段类型。

我读了你问题的更新,你真的应该打破这个数据库。正如我所理解的,您需要创建一个具有唯一ID的新订单。但订单可能不会立即付款,因此在支付订单时,还需要一个唯一的收据编号。您可以为收据生成一个随机数,使字段唯一,并且在没有错误的情况下更新数据库中的字段。这太恶心了

您最好创建一个新的付款表。因此,您的orders表将存储一个自动递增的orderID(根据他们的回答),以及其他数据,如userID、customerID、日期、描述等。然后您将有一个paymentID/transactions表,该表将存储paymentID(自动递增)、orderID(与orders表相关)、付款日期、状态、金额等


这是跟踪付款交易的首选方法。既然你知道从哪里开始,你肯定应该做一些关于如何实际实现这一点的研究。我们使用关系数据库是有原因的

谁告诉你触发器可以解决这个问题?您需要停止收听它们。这是一个问题,早就用
auto\u increment
主键列解决了。你使用的是什么样的ID生成机制?你怎么会认为随机ID是个好主意?为什么他们要建立他们的应用程序?呵呵,我被问到这个问题并被另一个人给出了这个解决方案。随机id,因为没有两个id可以相同。是的,这是正确的,但为了检索数据,我必须检查最后一个id并将其发送回。如果两个请求同时发送,则第一个请求可能会获取第二个请求的ID(信息)。如果在执行插入后直接检索ID,则不会发生这种情况。曾经在执行插入后,您不是唯一需要检索ID的人,这个答案是正确的:)我已经编辑了帖子,自动增量仍然有效吗?自动增量发生在插入时;因为(故意)两次插入不可能同时发生,所以没有重复。是的,哈哈,我同意,这会使它更有效率。我被要求改变现有的结构,这就是为什么我想要一个基本的解决方案本身。这个人会告诉我的是,这会使系统变慢。会吗?如果不是,那么这是最好的解决方案。这个系统有很多组件,我担心他担心这个系统会变得很落后:它不会让系统变慢。如果事务数据与订单数据一起存储,这是系统中的一个巨大缺陷。你不应该试图解决这些缺陷,你应该试图修复它们。付款和收款数据非常重要,因此如果您正确编写了此应用程序的某个部分,请将其设置为该部分。