如何获取更新行的 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?
我想知道更新行的 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?