我想通过获取最后插入的 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_id
set by auto increment
),d_sid=20
然后添加了另一行,包含d_id=11
(again, auto increment
) 和d_sid=30
。
然后,您想要查找最近的插入 with d_sid=20
,但这样做LAST_INSERT_ID
是不可能的,因为LAST_INSERT_ID
has value 11
,并且没有与d_id
and匹配的行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
or PDO
。