mysql更新最后插入的id

时间:2013-01-07 09:05:20

标签: mysql

我想通过获取最后插入的ID来更新表,但它没有给出任何结果。 这是查询:

 $quer = mysql_query("UPDATE date 
                      SET d_startdate = '$start', d_enddate = '$end' 
                      WHERE d_id = LAST_INSERT_ID() AND d_sid = $id");

d_id是主键,d_sid是另一个表的外键

4 个答案:

答案 0 :(得分:1)

我在同一个表上使用了INSERT和UPDATE操作,并且工作正常。您可以根据需要更改此查询。

<?php
$con = mysql_connect("localhost","root","") or die("Could not connect");
mysql_selectdb("test", $con);
$query = 'INSERT INTO item (`name`) VALUES ("DELTaaaA")';
$res = mysql_query($query, $con) or die(mysql_error());
echo "<pre>";
print_r($res);
$query = 'UPDATE item set name="DELTaaaA1" WHERE id = LAST_INSERT_ID()';
$res = mysql_query($query, $con) or die(mysql_error());
print_r($res);
?>

它应该返回1 1

答案 1 :(得分:0)

在此之前使用这样的代码 SELECT LAST_INSERT_ID()并将其分配给变量,然后在代码中使用该变量

答案 2 :(得分:0)

我不知道正常的语法,但是PDO语法很简单,你可以通过函数PDO::lastInsertId()获取最后插入的id,将其用作$myPDOobject->lastInsertId()。更多信息请访问:http://php.net/manual/en/pdo.lastinsertid.php

答案 3 :(得分:0)

LAST_INSERT_ID为您提供最新 insert的ID。

假设您添加了一行d_id=10d_id设置auto increment)和d_sid=20,然后另一行d_id=11(同样,{ {1}})和auto increment

然后,您希望查找包含d_sid=30的最新插入内容,但无法使用d_sid=20执行此操作,因为LAST_INSERT_ID的值为LAST_INSERT_ID,且没有行与11d_id匹配。您必须自己跟踪每个类别的最新d_sid=20,很可能是在插入新行时。

  • 执行d_id
  • INSERT SELECT(将其命名为LAST_INSERT_ID
  • 将元组L_ID存储在某个位置,因此您知道<d_sid, L_ID>最新的d_sid有值INSERT
  • L_ID您的桌子UPDATE是您想要的,d_sid取自元组

作为旁注,d_id已弃用,因此您应切换为其他内容,例如mysql_*mysqli