Php 有没有办法在插入之前确定插入的id是什么?

Php 有没有办法在插入之前确定插入的id是什么?,php,Php,好的,我允许用户将产品添加到我的网站,我存储的图像如下: image/products/username/itemid/filename.extension 这看起来像: image/products/admin/item1/mypic.jpg 如您所见,在项目之后,我将从数据库中附加项目id,因此当用户添加图像时,它将上载到该文件夹并创建该文件夹,是否可以在上载之前获取下一次插入的id,或者我必须先插入,然后使用lastinsertid?如果图像无法上传,会发生什么情况 如果这是不可能的,我将

好的,我允许用户将产品添加到我的网站,我存储的图像如下:

image/products/username/itemid/filename.extension

这看起来像:

image/products/admin/item1/mypic.jpg

如您所见,在项目之后,我将从数据库中附加项目id,因此当用户添加图像时,它将上载到该文件夹并创建该文件夹,是否可以在上载之前获取下一次插入的id,或者我必须先插入,然后使用lastinsertid?如果图像无法上传,会发生什么情况


如果这是不可能的,我将如何实现这一点,正如您的问题的评论中所提到的,查询数据库中的下一个自动增量id是非常有问题的,因为在insert查询运行时它可能还不是真的

如果你想确保如果上传失败,你的数据库中没有记录,我建议你使用一个新的

这将基本上允许您运行查询,获取最后一个插入id,执行您需要执行的任何文件上载/操作。如果该文件上载或其他操作失败,您可以回滚或多或少会撤消插入的事务,然后返回重新启动的位置


如果文件操作成功,您将提交事务,插入内容将实际添加到数据库。

您可以查询最高id,然后自行递增。在插入之前,您必须解释失败的原因。无论您做什么,您都可能遇到两个操作获得相同“id”值的竞争条件。如果其中一个超过另一个,它可能会变得丑陋。我认为您必须首先插入它,即get-PDO::lastInsertId。您可以猜测,通过获取最后一个id并添加1,有多少人会这样做,这令人惊讶,但您可能会失败。。。实际上,这种方法只能在一个只有一个用户的系统上工作,即使这样也不是万无一失的。但实际上,将条目添加到数据库中,获取最后插入的id,然后创建文件夹并移动图像。。。。如果图像无法上传,那么你应该在做任何其他事情之前进行测试