我需要知道我将在插入数据库之前插入的记录的id(并保留它),因为我添加了产品并上传了该产品的图像,并且图像的位置与产品相关ID。
我可以找到随后的ID,但我还需要保持“锁定”状态,直到产品图片上传为止,以确保其他用户不会同时使用此ID。
答案 0 :(得分:4)
您可以将其拆分为两个操作。
首先,您为产品创建所有内容并获取ID。在第二行中,您使用您上传的图片更新行,现在可以保存,因为您知道ID。
答案 1 :(得分:1)
您可以将其作为交易
我用谷歌搜索“php mysql transaction”,有很多教程如何做到这一点
答案 2 :(得分:0)
有些人使用mysql_insert_id来接收最后插入的ID。但我有一个问题,这个函数不是线程安全的,你可能会得到另一个刚刚插入的线程的id。
但是,在您的情况下,我只想到两个选项:
1)创建own sequence generator 2)插入您的数据行,使用where子句中的所有值再次选择它,并使用该ID。在事务中运行选项2(如上所述)
我会选择选项1.序列生成通常与所有其他数据库一起使用(据我所知,广泛使用的mysql仅支持自动增量)。因此序列是完全可以接受的。
干杯,基督徒
答案 3 :(得分:0)
我需要几乎相同的东西 - 除了目录依赖。
我正在考虑使用会话ID插入图像,然后在提交表单时,使用相同的会话ID更新图像,并向其添加父元素ID。