我正在尝试在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]; }
但它也不起作用.我每次打电话都会返回0.是否有任何特殊的清洁方式来找到最后插入的ID?
给定一个带有表的SQLite3数据库b
,如下所示:
BEGIN TRANSACTION; CREATE TABLE b(a integer primary key autoincrement, b varchar(1)); COMMIT;
这段代码给了我一个lastInsertId
:
public function lastInsertId() { $result = $this->_connection->query('SELECT last_insert_rowid() as last_insert_rowid')->fetch(); return $result['last_insert_rowid']; }
也就是说 - 如果您的表被正确定义,您唯一的问题可能是您尝试获取键$ result [0] - 同样,每当您使用计算列时,我建议使用"AS"对列进行别名关键字,如上所述.如果您不想对列进行别名,则在SQLite3中该列应命名为"last_insert_rowid()".