为什么在我的代码 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 排序并获得第一条记录。

http://php.net/manual/en/pdo.lastinsertid.php

代码中没有 INSERT。

我猜您正在寻找 table 中最大的 ID。 那么答案就是:

SELECT MAX(id) FROM links