2

我想通过获取最后插入的 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

4 回答 4

3

我在同一张表上使用了 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

于 2013-01-07T09:23:07.170 回答
0

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

于 2013-01-07T09:10:08.197 回答
0

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

于 2013-01-07T09:16:15.790 回答
0

LAST_INSERT_ID给你最近 insert的 id 。

假设您添加了一行,其中包含d_id=10( d_idset by auto increment),d_sid=20然后添加了另一行,包含d_id=11(again, auto increment) 和d_sid=30

然后,您想要查找最近的插入 with d_sid=20,但这样做LAST_INSERT_ID是不可能的,因为LAST_INSERT_IDhas value 11,并且没有与d_idand匹配的行d_sid=20。您必须自己跟踪d_id每个类别的最新信息,最有可能在您插入新行时。

  • INSERT
  • SELECTLAST_INSERT_ID(给它命名L_ID
  • 将元组存储在<d_sid, L_ID>某个地方,这样你就知道对于d_sid你最近INSERT的有价值L_ID
  • UPDATE你的表d_sid是你想要的,d_id取自元组

作为旁注,mysql_*已弃用,因此您应该切换到其他内容,例如mysqlior PDO

于 2013-01-07T09:31:37.893 回答