php - (mysql, php) 如何在插入数据前获取 auto_increment 字段值?

标签 php mysql

我正在将图像文件上传到存储服务器。在上传之前,我应该编写文件名,其中包含 AUTOINCREMENT VALUE(例如,12345_filename.jpg)。

如何在插入数据库之前获取自动增量值?

我只看到一个解决方案

  1. 插入空行
  2. 获取它的自增值
  3. 删除这一行
  4. 使用 p.1 中的自动增量值插入包含真实数据的行

还有其他解决办法吗?

谢谢

最佳答案

自动增量值由数据库本身生成,当插入完成时;这意味着您无法在执行实际插入查询之前获取它。

您提出的解决方案不是经常使用的解决方案——应该是:

  • 插入一些半空数据
  • 获取已生成的自动增量值
  • 使用该自动增量值进行计算
  • 更新行以放置新的/完整的数据——使用先前在 update 查询的 where 子句中生成的自动增量来识别哪一行是正在更新。

当然,作为安全预防措施,所有这些操作都必须在事务中进行(以确保“全有或全无”行为)


作为伪代码:

begin transaction
insert into your table (half empty values);
$id = get last autoincrement id
do calculations
update set data = full data where id = $id
commit transaction

关于php - (mysql, php) 如何在插入数据前获取 auto_increment 字段值?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2251463/

相关文章:

php - 将表单发送到用户永远不知道或看到的 php 脚本

php - 将现有 WordPress 网站迁移到 Azure 后,导入 xml 内容后显示空白页面

php - 市价订单在特定日期被卡住?艰难的处境

php - MySQL SELECT、LEFT JOIN 和 COUNT() 在一个查询中返回错误

java - 如何在数据库中给出生产日期和最佳月份之前计算到期日期

mysql - 仅当其他表中不存在时才将记录插入表中 - MySQL

sql - 为什么 ADODB 在更新时插入 NULL 值?

php - symfony 3 如何禁用 Controller 中的输入

javascript - `add_to_cart: function(name, price, attr, image_src)` -> 如何保存php mysql表列/名称、价格、数量/

php - 多个相同的实体关系