我有两个关系表,如何得到第一个表的最后一个表,并在另一个表中使用它。
我希望$welfare_id
变量获取第一个表的last_insert_id
(另一个表)。
以下是代码:
<?php
include_once('config.php');
if (isset($_POST['record'])) {
$payeeName = $_POST['payeeName'];
$amount = $_POST['amount'];
$welfare_id = LAST_INSERT_ID();
$myd = $pdo->prepare('INSERT INTO welfare_funeral_payees(Name, Amount, welfare_id)VALUES(:upayeeName, :uamount, :uwelfare_id)');
$myd->bindParam(':upayeeName', $payeeName);
$myd->bindParam(':uamount', $amount);
$myd->bindParam(':uwelfare_id', $welfare_id);
if ($myd->execute()) {
?>
<script>
alert("New Welfare created");
</script>
<?php
} else {
?>
<script>
alert("Couln't not create Welfare");
</script>
<?php
}
}
?>
答案 0 :(得分:0)
你必须考虑LAST_INSERT_ID()在每个连接基础上工作,所以,如mysql手册中所述:
生成的ID在服务器上维护 每个连接基础。这意味着返回的值 给定客户端的函数是生成的第一个AUTO_INCREMENT值 对于影响AUTO_INCREMENT列的最新语句 客户。此值不受其他客户端的影响,即使它们也是如此 生成自己的AUTO_INCREMENT值。此行为可确保 每个客户端都可以检索自己的ID而无需担心 其他客户的活动,无需锁或 交易。
这意味着只有在插入后才能有意义地调用LAST_INSERT_ID(),并且该id仅与该特定客户端相关。
要解决您的问题,您必须采取以下方法:使用MAX(按照Nic3500的建议),这会产生一个问题,即您不确定自己真正使用的是哪个ID,或者在帖子中传递您需要的ID,在帖子之前的某种方式(例如,从已经创建的&#34;福利&#34;)的列表中