如何使用Zend_Db获取Sqlite数据库的最后一个插入ID

far*_*zad 5 php sqlite zend-db

我正在尝试在PHP应用程序中获取Sqlite DB的最后一个插入的行ID.我正在使用Zend Framework的PDO Sqlite适配器进行数据库处理.lastInsertId()方法应该给我结果,但它不会.在php.net的PDO文档中,我读到lastInsertId()在所有数据库上的工作方式可能不同.但它根本不适用于sqlite吗?我尝试通过这个覆盖适配器的lastInsertId()方法:

// Zend_Db_Adapter_Pdo_Sqlite
public function lastInsertId() {
    $result = $this->_connection->query('SELECT last_insert_rowid()')->fetch();
    return $result[0];
}
Run Code Online (Sandbox Code Playgroud)

但它也不起作用.我每次打电话都会返回0.是否有任何特殊的清洁方式来找到最后插入的ID?

TML*_*TML 11

给定一个带有表的SQLite3数据库b,如下所示:

BEGIN TRANSACTION;
CREATE TABLE b(a integer primary key autoincrement, b varchar(1));
COMMIT;
Run Code Online (Sandbox Code Playgroud)

这段代码给了我一个lastInsertId:

public function lastInsertId() {
    $result = $this->_connection->query('SELECT last_insert_rowid() as last_insert_rowid')->fetch();
    return $result['last_insert_rowid'];
}
Run Code Online (Sandbox Code Playgroud)

也就是说 - 如果您的表被正确定义,您唯一的问题可能是您尝试获取键$ result [0] - 同样,每当您使用计算列时,我建议使用"AS"对列进行别名关键字,如上所述.如果您不想对列进行别名,则在SQLite3中该列应命名为"last_insert_rowid()".