PDO最后一个插入id返回null或找不到任何方法

时间:2014-07-10 12:40:31

标签: php mysql pdo

我一直在寻找一些解决方案,但它们都没有工作,尝试了stackoverflow的所有主题,什么都没有。

这是我的连接脚本:

private function __construct() {
    try {
        $this->_pdo = new PDO('mysql:host=' . Config::get('mysql/host') . ';dbname=' . Config::get('mysql/db'), Config::get('mysql/username'), Config::get('mysql/password'));
        $this->_pdo->exec("SET NAMES utf8");
    } catch(PDOException $e) {
        die($e->getMessage());
    }
}

这是我的查询方法:

public function query($sql, $params = array()) {
    $this->_error = false;
    if($this->_query = $this->_pdo->prepare($sql)) {
        $x = 1;
        if(count($params)) {
            foreach($params as $param) {
                $this->_query->bindValue($x, $param);
                $x++;
            }
        }

        if($this->_query->execute()) {
            $this->_results = $this->_query->fetchAll(PDO::FETCH_OBJ);
            $this->_count = $this->_query->rowCount();
        } else {
            $this->_error = true;
        }
    }

    return $this;
}

我不得不重做我的帐户激活系统并将激活码放到单独的表中,所以当新用户来登记时我需要抓住插入ID以放置在user_id下的激活码表中。问题是我不知道如何更改我提供的脚本以便能够获取该ID。

我尝试了$this->_pdo->lastInsertId();

$this->_db->lastInsertId();

在第一种情况下,我在第二种情况下一直得到null我没有在类中找到方法lastInsertId()

也许我把它放在错误的地方或做错了,帮助会很好,提前谢谢你;)

顺便说一句,我在mysql服务器下使用pdo

1 个答案:

答案 0 :(得分:2)

if($this->_query->execute()) {
    $id = $this->_pdo->lastInsertId();
    $this->_results = $this->_query->fetchAll(PDO::FETCH_OBJ);
    $this->_count = $this->_query->rowCount();
}