如何获取更新行的 ID?

How to get ID of updated row?

我想知道更新行的 ID,我试过这个:

$sql = $db->prepare("UPDATE `timeslots` SET `service` = ?  WHERE `status` = ?");
$sql->bind_param("is", 0, "open");
$sql->execute();
        
if ($sql->execute()) {
   echo "ID: ".$db->insert_id."<br />";
}

但结果每次都是这个而不是 ID:

ID: 0
ID: 0

insert_id 的文档明确指出:

Returns the ID generated by an INSERT or UPDATE query on a table with a column having the AUTO_INCREMENT attribute.

您的查询没有生成新的 ID。您不能使用 $db->insert_id,因为 MySQL 服务器没有报告新 ID。

您可以欺骗 MySQL 来提供此值。只需重新生成 ID 即可将其重置为之前的值。

$sql = $db->prepare("UPDATE `timeslots` 
    SET `service` = ?, Id=LAST_INSERT_ID(Id) 
    WHERE `status` = ?");

How to get ID of the last updated row in MySQL?