$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();
...抛出
致命错误:未捕获的异常' PDOException'消息' SQLSTATE [42S22]:未找到列:1054未知列' id'在'字段列表''在
答案 0 :(得分:1)
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'
对你来说primary_key = LAST_INSERT_ID(primary_key)
看起来很吓人吗?然后从MySQL手册中阅读:http://dev.mysql.com/doc/refman/5.0/en/insert-on-duplicate.html
答案 1 :(得分:0)
在您的陈述中,它可能会更新多条记录。所以获取最后一次更新ID并不是一个好主意。
您可以使用SELECT语句在更新之前获取所有ID 。
SELECT ID FROM table WHERE value = '$value'