【问题标题】:Codeigniter update_batch is not workingCodeigniter update_batch 不工作
【发布时间】:2014-03-07 16:08:01
【问题描述】:

我有一个数据库表:

ConfigID | Type  | Key            | Value
--------------------------------------------------------------
0        | "API" | "ClientID"     | "iofoewi"
1        | "API" | "ClientSecret" | "eijfoiewjfioejfoiewjfoie"

取以下代码:

    $data = array(
        array(
            'Key' => "ClientID",
            'Value' => $testAPICredential->ClientID
        ),
        array(
            'Key' => "ClientSecret",
            'Value' => $testAPICredential->ClientSecret
        )
    );

    try
    {
        $this->context->db->trans_start();
        $this->context->db->update_batch( $this->tableName, $data, "Key" ); 
        $this->context->db->trans_complete();        
        return ($this->context->db->trans_status() === FALSE)? FALSE:TRUE;
    }
    catch( Exception $e )
    {
        return FALSE;
    }

当我使用分析器时,它会输出这条 SQL:

UPDATE `config` SET `Value` = CASE 
WHEN `Key` = 'ClientID' THEN 'iofoewi2'
WHEN `Key` = 'ClientSecret' THEN 'eijfoiewjfioejfoiewjfoie2'
ELSE `Value` END WHERE `Key` IN ('ClientID','ClientSecret')  

然而数据库表是 un=touched?

有什么想法吗?

【问题讨论】:

  • 事务可能会失败并且已回滚。 $this->context->db->trans_status() 返回什么?尝试打开config/database.php 中的db_debug 选项以查看是否返回任何错误。
  • 上下文是扩展 CI_Model 的类的实例。谢谢,我试试看
  • 你说得对,Oracle 似乎比 MySQL 更挑剔。我已经删除了我的答案,因为它没有真正的帮助。

标签: php codeigniter activerecord


【解决方案1】:

如果您使用的是 CI 3.1.2,也许它会对您有所帮助。

在我们的项目中。我们发现函数 update_patch 有时会出现问题。更新索引有时会出错。所以我发现另一个替换函数是 update_batch_real_index 在文件/yourproject/system/database/DB_query_builder.php

从使用它到现在是 3 个月,我们没有再次发现任何错误。 也许你应该尝试一下。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2017-04-06
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-05-11
    • 2019-04-05
    • 1970-01-01
    相关资源
    最近更新 更多