为什么在我的代码中PDO lastInsertId()返回0?

时间:2015-02-04 10:50:15

标签: php mysql pdo

我正在尝试使用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();
}

2 个答案:

答案 0 :(得分:1)

代码中没有INSERT。

我猜你正在寻找表中最大的id。 然后答案是:

SELECT MAX(id) FROM links

答案 1 :(得分:0)

lastInsertId()适用于上一个查询。您的查询是SELECT类型,这就是它无法工作的原因。您可以在INSERT查询后使用lastInsertId()。如果您想知道最后一条记录,您可以使用max(id)或按id desc排序并获得第一条记录。

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