lastInsertId()返回空字符串

时间:2011-12-05 20:17:40

标签: php mysql database pdo

为什么?

try{

    $st = $this->prepare("INSERT INTO thetable (a,b) VALUES (?,?)");
    $st->execute(array(5,5));

    $id = $this->lastInsertId();

    echo $id;            // nothing 
    echo gettype($id);   // string

    return $id;          // and I get NULL returned, this is even weirder...

}catch(PDOException $e){
    die($e);
    return false;
}

该表有一个自动增量的id列。为什么我没有得到id值?

2 个答案:

答案 0 :(得分:5)

好的,刚刚发现了原因。我发布这个作为答案,因为很可能会有其他人会遇到同样的问题:D

所以PDO::lastInsertId();是空的是你在PDO::commit()之后调用它,我这样做是因为我使用的是原子事务。它需要在execute()...

之后调用

请注意,我在上面的代码中没有beginTransaction和commit(),所以我的问题中的代码实际上是正确的,问题是在家里:)

答案 1 :(得分:1)

而不是

$this->lastInsertId();

你试过吗

$st->lastInsertId();