gpt4 book ai didi

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

转载 作者:IT王子 更新时间:2023-10-29 06:28:23 25 4
gpt4 key购买 nike

我试图在我的 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/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com