[mysql]返回最后一个插入 ID 与 PDO

标签: MySQL PHP
发布时间: 2017/1/9 22:14:47
注意事项: 本文中文内容可能为机器翻译,如要查看英文原文请点击上面连接.

我有这类和想要扩展返回的 ID 的最后插入的行,但我不断收到此错误︰

致命错误︰ 调用未定义方法 PDOStatement:: lastInsertId () 线 49

我的代码︰

class DB {
public static $instance = null;

private     $_pdo = null,
            $_query = null,
            $_error = false,
            $_results = null,
            $_count = 0,
            $_lastID = 0;

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

public static function getInstance() {
    if(!isset(self::$instance)) {
        self::$instance = new DB();
    }
    return self::$instance;
}

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();
            $this->_lastID = $this->_query->lastInsertId(); // <- ERRO
        } else {
            $this->_error = true;
        }
    }

    return $this;
}

解决方法 1:

PHP 文件,lastInsertId 是一个 pdo 对象,不 stmt 对象 (该对象您引用通过-_query > $this) 的方法。试试这个︰

$this->_lastID = $this->_pdo->lastInsertId();
官方微信
官方QQ群
31647020