从多个插入中获取最后一个 id [已关闭]

Get last id from multiple insert [closed]

提问人:Ab Le 提问时间:12/12/2019 最后编辑:MachavityAb Le 更新时间:8/26/2020 访问量:91

问:


想改进这个问题吗?通过编辑这篇文章添加详细信息并澄清问题。

3年前关闭。

我有这个多记录插入。我需要从中获取最后一个 id 并将表插入到表中。我该怎么做?productloanimport

这是我的代码:

$sql = "INSERT INTO `product` (`product_id`, `barcode`, `delete`,   `id_list_name`) VALUES (NULL, '".$barcode."', '0', '".$listnameid."');
        INSERT INTO `loan` (`loan_id`, `date`, `Quantity`, `delete`, `id_user`) VALUES (NULL, '".date("Y-m-d")."', '1', '0', '".$userid."');
        INSERT INTO `import` (`import_id`, `id_product`, `date`, `delete`, `date delete`, `id_user`, `id_loan`) VALUES (NULL, '4', '".date("Y-m-d")."', '0', '', '".$userid."', '"4"');
       ";
        mysqli_query($conn, $sql);
php mysql mysqli 插入 主键

评论

1赞 Funk Forty Niner 12/12/2019
首先,只有最后一个 INSERT 才会执行,因为您没有使用多查询。
1赞 Nigel Ren 12/12/2019
'"4"');有几到多的引号。
0赞 René Höhle 12/12/2019
什么是 ?mysqli_insert_id
2赞 Strawberry 12/12/2019
全开大口注射
0赞 Ab Le 12/12/2019
“4”');只是手动输入,我需要用贷款表中的最后一个 id 替换它

答:

2赞 Your Common Sense 12/12/2019 #1
  1. 没有“多次插入”这样的东西。每个插入必须单独执行。特别是当您需要从每个查询中插入 ID 时。
  2. 所有插入查询都必须使用预准备语句执行。

这是您的代码正确编写

$sql = "INSERT INTO `product` (`product_id`, `barcode`, `delete`,   `id_list_name`) VALUES (NULL, ?, '0', ?)";
$stmt = $conn->prepare($sql);
$stmt->bind_param("ss", $barcode,$listnameid);
$product_id = $conn->insert_id;

$sql = "INSERT INTO `loan` (`loan_id`, `date`, `Quantity`, `delete`, `id_user`) VALUES (NULL, CURDATE(), '1', '0', ?)";
$stmt = $conn->prepare($sql);
$stmt->bind_param("s", $userid);
$loan_id = $conn->insert_id;

$sql = "INSERT INTO `import` (`import_id`, `id_product`, `date`, `delete`, `date delete`, `id_user`, `id_loan`) VALUES (NULL, ?, CURDATE(), '0', '', ?, ?)";
$stmt = $conn->prepare($sql);
$stmt->bind_param("sss", $product_id, $userid, $loan_id;);
$import_id = $conn->insert_id;

评论

2赞 Funk Forty Niner 12/12/2019
应该注意的是,为了使 last_insert_id() 正常工作,每个表都必须包含一个auto_increment列。