Codeigniter update_batch无效

时间:2014-03-07 16:08:02

标签: php codeigniter activerecord

我有一个数据库表:

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')  

然而,数据库表未被触及?

有什么想法吗?

1 个答案:

答案 0 :(得分:0)

如果您使用的是CI 3.1.2,那么它可以帮助您。

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

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