【问题标题】:Codeigniter: How to get result() for TransactionsCodeigniter:如何获取交易的结果()
【发布时间】:2016-03-15 20:57:19
【问题描述】:

我的设置是:codeigniter+postgresql。

这是官方 CI 用户指南中关于使用 Transactions 的示例:

$this->db->trans_start();
$this->db->query('AN SQL QUERY...');
$this->db->query('ANOTHER QUERY...');
$this->db->query('AND YET ANOTHER QUERY...');
$this->db->trans_complete();

我的交易返回一个值(INSERT ... RETURNING some_id)。 问题:如何将这个 some_id 分配给 php (CI) 中的变量?

【问题讨论】:

    标签: php postgresql codeigniter model transactions


    【解决方案1】:

    就像您对 SELECT 查询所做的一样 - 对 query() 返回的对象调用 result()

    交易与此无关。

    【讨论】:

    • 谢谢回答。可以分享一个简单的例子吗?
    • $this->db->query('INSERT INTO ... RETURNING some_id')->result() ... 说真的,如果您阅读我写的所有内容,您将不需要示例。
    • $this->db->trans_start(); $this->db->query('UPDATE table1...'); $some_id = $this->db->query('INSERT INTO table2 ... RETURNING some_id')->result(); $this->db->query('UPDATE table1...'); $this->db->trans_complete(); 此代码返回错误:在非对象上调用成员函数 result()
    • 这意味着您的查询失败了......或者您使用的是过时的 CodeIgniter 版本。虽然,顺便说一句,你写的很明显你也不知道result() 是如何工作的;你也应该阅读documentation
    • 3 只是主要版本号......它并不能说明整个故事。 query() 应该返回 INSERT ... RETRUNING 语句的结果集,但是有一个 bug 阻止了这种情况的发生,它在版本 3.0.4 中得到了修复 - 你显然正在运行一个版本比那更老。 :)
    猜你喜欢
    • 2018-10-03
    • 2019-06-01
    • 2019-07-04
    • 1970-01-01
    • 1970-01-01
    • 2022-07-22
    • 2020-11-23
    • 2023-03-13
    • 2020-12-29
    相关资源
    最近更新 更多