【问题标题】:Get last id from multiple insert [closed]从多个插入中获取最后一个 ID [关闭]
【发布时间】:2019-12-12 14:30:35
【问题描述】:

我有这个多记录插入。我需要从productloan 表插入到表import 获取最后一个ID。我该怎么做?

这是我的代码:

$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);

【问题讨论】:

  • 一方面,只有最后一个 INSERT 会执行,因为您没有使用多重查询。
  • '"4"'); 有几个到多个引号。
  • mysqli_insert_id 是怎么回事?
  • 广泛注射
  • '"4"');只是手动输入我需要用贷款表中的最后一个 id 替换它

标签: php mysql mysqli insert primary-key


【解决方案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;

【讨论】:

  • 应该注意,为了last_insert_id() 工作,每个表都必须包含一个auto_increment'ed 列。
猜你喜欢
  • 2011-05-07
  • 2023-03-16
  • 2011-04-30
  • 1970-01-01
  • 1970-01-01
  • 2011-06-01
  • 2011-03-06
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多