如果没有更改数据,Codeigniter update_batch将返回false

时间:2017-03-09 15:52:00

标签: php mysql codeigniter

我在codeigniter中发现了一些令人不安的事情,为什么当我使用update_batch并且要更新的数据与数据库中的数据完全相同时,它总是返回false。

我似乎无法在CI文档中找到任何合理且良好的解释和说明。即使没有数据更改,我也需要它返回true,因为它会影响我的代码中的大部分,并且如果无法更新db(即将已存在的数据插入到唯一列中),则仅返回false,然后它应该返回false。

还有一件事,如何在CI中显示db查询错误消息?已经读过它应该是$this->db->_error_message(),但它会一直返回Call to undefined method。我在这里缺少什么?

1 个答案:

答案 0 :(得分:2)

您的问题包含相互矛盾的信息:

  • update_batch()如果已成功执行至少一个false查询,则从不返回布尔值UPDATE,无论是否更新了任何记录。
    • 在CI2中,它具有void返回值(如果您想使用它,则会隐式转换为null。)
    • 在CI3中,它返回一个包含受影响行数的整数(int(0)bool(false)不同)
    • 在两个版本树中,只有在传递错误参数时才会返回布尔false
  • _error_message()曾经存在于CI2上,但其下划线前缀表示它是一种内部方法,您不应该使用它。 CI3有一个error()方法替换它,如果首先出现错误,它会返回数组中的代码和消息。