如何获得自动递增插入行PDO PHP的主键?

时间:2015-03-17 09:58:24

标签: php sql sqlite pdo

我想在PHP中使用PDO向数据库插入一个新行,主键是自动递增,所以我没有插入PK的值。这是代码:

public function insertQuestion($text){
    try{
        $sql = "INSERT INTO question(text) VALUES(:question)"; 

        $stm = $this->prepare($sql);

        $stm->execute(array(
                ':question' => $text,
        ));

        $question = new Question();
        $question->text = $text;
        $question->id = -1; // How do I get the PK of the row just inserted?

    }catch(PDOException $e){
        if ($e->getCode() == 1062) return FALSE; // fails unique constraint
        else echo $e->getMessage();
    }   
}

但是,我需要存储插入到$ question对象的新行的PK,我有其他属性是UNIQUE,所以我可以用SELECT语句来查找PK,但是,有没有更好的方法这样做?

2 个答案:

答案 0 :(得分:1)

调用PDO对象的lastInsertId。

if($stmt->execute()) {
    return $pdo->lastInsertId();
}
return false;

答案 1 :(得分:0)

在数据库中插入记录后,编写另一个查询以从主键列值中降序获取最高记录。

e.g。通过prim_key_id desc;

从表顺序中选择prim_key_id top 1