我想通过获取最后插入的 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 是另一个表的外键
我想通过获取最后插入的 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 是另一个表的外键
我在同一张表上使用了 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
在此之前使用这样的代码
SELECT LAST_INSERT_ID()并将其分配给一个变量,然后在您的代码中使用该变量
我不知道正常的语法,但是 PDO 语法很简单,你可以通过函数将最后插入的 idPDO::lastInsertId()用作$myPDOobject->lastInsertId(). 更多信息在这里: http: //php.net/manual/en/pdo.lastinsertid.php
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每个类别的最新信息,最有可能在您插入新行时。
INSERTSELECTLAST_INSERT_ID(给它命名L_ID)<d_sid, L_ID>某个地方,这样你就知道对于d_sid你最近INSERT的有价值L_IDUPDATE你的表d_sid是你想要的,d_id取自元组作为旁注,mysql_*已弃用,因此您应该切换到其他内容,例如mysqlior PDO。