我想通过获取最后插入的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是另一个表的外键
答案 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=10
(d_id
设置auto increment
)和d_sid=20
,然后另一行d_id=11
(同样,{ {1}})和auto increment
。
然后,您希望查找包含d_sid=30
的最新插入内容,但无法使用d_sid=20
执行此操作,因为LAST_INSERT_ID
的值为LAST_INSERT_ID
,且没有行与11
和d_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
。