为什么在我的代码 PDO lastInsertId() returns 0 中?
Why in my code PDO lastInsertId() returns 0?
我正在尝试使用 lastInsertId() 从数据库中获取最后一条记录,但它一直重新调整为 0。我不明白为什么会出现此问题。这是我的代码。
谢谢
$query = "SELECT url FROM links WHERE code = :code";
$get = $db->prepare($query);
$get->execute(array(
":code" => $code
));
if($get->rowCount()) {
$url = $get->fetch(PDO::FETCH_OBJ)->url;
$status = substr(get_headers($url)[0],9,3);
if(intval($status) == 301) {
$last = $db->lastInsertId();
$query = "SELECT url FROM links WHERE id = :id";
$send = $db->prepare($query);
$send->execute(
":id" => $last
);
$lastUrl = $send->fetch(PDO::FETCH_OBJ)->url;
header("Location:{$lastUrl}");
}
else {
header("Location:{$url}");
}
die();
}
lastInsertId() 适用于最后一个查询。您的查询是 SELECT 类型,这就是它不起作用的原因。您可以在 INSERT 查询之后使用 lastInsertId() 。如果您想知道最后一条记录,您可以使用 max(id) 或按 id desc 排序并获得第一条记录。
代码中没有 INSERT。
我猜您正在寻找 table 中最大的 ID。
那么答案就是:
SELECT MAX(id) FROM links
我正在尝试使用 lastInsertId() 从数据库中获取最后一条记录,但它一直重新调整为 0。我不明白为什么会出现此问题。这是我的代码。 谢谢
$query = "SELECT url FROM links WHERE code = :code";
$get = $db->prepare($query);
$get->execute(array(
":code" => $code
));
if($get->rowCount()) {
$url = $get->fetch(PDO::FETCH_OBJ)->url;
$status = substr(get_headers($url)[0],9,3);
if(intval($status) == 301) {
$last = $db->lastInsertId();
$query = "SELECT url FROM links WHERE id = :id";
$send = $db->prepare($query);
$send->execute(
":id" => $last
);
$lastUrl = $send->fetch(PDO::FETCH_OBJ)->url;
header("Location:{$lastUrl}");
}
else {
header("Location:{$url}");
}
die();
}
lastInsertId() 适用于最后一个查询。您的查询是 SELECT 类型,这就是它不起作用的原因。您可以在 INSERT 查询之后使用 lastInsertId() 。如果您想知道最后一条记录,您可以使用 max(id) 或按 id desc 排序并获得第一条记录。
代码中没有 INSERT。
我猜您正在寻找 table 中最大的 ID。 那么答案就是:
SELECT MAX(id) FROM links