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

标签 php sqlite zend-db

我试图在我的 PHP 应用程序中获取 Sqlite 数据库的最后插入的行 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 吗?

最佳答案

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

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()”。

关于php - 如何使用 Zend_Db 获取 Sqlite 数据库的最后插入 ID,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/506132/

相关文章:

c# - DbContext 不释放 SQLite 数据库

用于大型数据集的 SQLite?

zend-framework - Zend DB 表摘要

php - 格式化JSON_ENCODED数据PHP Highcharts

database - 通过BLOB在SQLite数据库中存储很小的音频/图像文件?

javascript - 在 php 中调用 ajax 后 CSS、Javascript 无法正常工作

php 设计问题 - Helper 会在这里提供帮助吗?

php - Zend 查找所有相关行

php - 登录脚本不起作用(重定向)

javascript - '解析 JSON 时出现 SyntaxError : Unexpected end of input'. 错误?