You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何获取两次不同INSERT语句的最后插入ID并分别存储

获取第二条INSERT语句的最后插入ID

其实这事很简单,mysqli提供的mysqli_insert_id()函数是跟当前数据库连接绑定的——每次执行完一条带自增主键的INSERT语句后,它都会返回这条插入操作生成的最新自增ID。所以你只需要在第二条INSERT执行成功后,再调用一次这个函数,就能拿到第二条的ID并存到变量里。

给你结合你的代码举个完整的实际例子:

// 第一条INSERT到resume表
$insertSQL = sprintf("INSERT INTO `resume` (`uID`,`profSummary`,`status`) VALUES (%s,%s,%s)", 
    GetSQLValueString( test_input($row_user["uID"]), "int"), 
    GetSQLValueString( test_input($_POST["proSum"]), "text"), 
    GetSQLValueString( 1, "int"));
mysqli_select_db($dbmain, $your_database_name);
// 执行第一条INSERT
$first_result = mysqli_query($dbmain, $insertSQL);
// 存储第一条的插入ID
$first_resume_id = mysqli_insert_id($dbmain);

// 第二条INSERT(示例:假设插入到experience表,和resume做关联)
$insertSQL2 = sprintf("INSERT INTO `experience` (`resumeID`, `company`, `jobTitle`) VALUES (%s,%s,%s)", 
    GetSQLValueString($first_resume_id, "int"), // 可以直接用第一条的ID做关联
    GetSQLValueString(test_input($_POST["company"]), "text"), 
    GetSQLValueString(test_input($_POST["jobTitle"]), "text"));
// 执行第二条INSERT
$second_result = mysqli_query($dbmain, $insertSQL2);

// 存储第二条的插入ID
if ($second_result) { // 最好先判断插入是否成功,避免无效值
    $second_experience_id = mysqli_insert_id($dbmain);
    // 这里就可以用$second_experience_id做后续操作了
} else {
    // 处理插入失败的情况,比如输出错误信息排查问题
    echo "第二条插入失败:" . mysqli_error($dbmain);
}

还有几个要注意的小细节:

  • 必须确保第二条INSERT对应的表有自增主键字段(比如设为AUTO_INCREMENT的id字段),不然mysqli_insert_id()会返回0,拿不到有效ID。
  • 一定要在mysqli_query()执行成功后再调用mysqli_insert_id(),如果插入失败,这个函数的结果可能不准确。
  • 全程要用同一个数据库连接对象(你的代码里是$dbmain),如果中途切换了连接,拿到的就不是对应操作的ID了。

内容的提问来源于stack exchange,提问作者oladepo wisdom

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.21 07:49:30