[英]lastInsertId() for UPDATE in Prepared Statement
$query = $database->prepare("UPDATE table SET value = value WHERE value = '$value'");
$query_1->execute();
$database->connection->lastInsertId();
上面的代码不起作用。 我试图获取的值是主键自动增量。
就像lastInsertId()的名称所暗示的那样,它只能用于插入。 如果是这样,在UPDATE上实现相同目标的正确方法是什么?
如果已发生更新,我希望返回的值是表的主键。
就像是..
lastUpadteId()
$query_1 = $database->connection->prepare("UPDATE accounts SET traffic = traffic + '$file_size', id = LAST_INSERT_ID(id) WHERE primary_key = '$account_id'");
$query_1->execute();
echo $database->connection->lastInsertId();
抛出...
致命错误:消息为“ SQLSTATE [42S22]”的未捕获异常“ PDOException”:找不到列:1054“字段列表”中的未知列“ id”
LAST_INSERT_ID()在UPDATE上不起作用,因为它在INSERT上起作用。 但是您仍然可以在更新后使用LAST_INSERT_ID()获得更新的行的ID。 这是查询的写法:
UPDATE table
SET
value = value,
primary_key = LAST_INSERT_ID(primary_key)
WHERE value = 'some value'
它对您来说是strage还是primary_key = LAST_INSERT_ID(primary_key)
吗? 然后从MySQL手册中阅读: http : //dev.mysql.com/doc/refman/5.0/en/insert-on-duplicate.html
在您的声明中,它可能会更新多个记录。 因此,获取最新的更新ID不是一个好主意。
您可以使用SELECT语句在更新之前获取所有ID。
SELECT ID FROM table WHERE value = '$value'
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.