Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/249.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php Codeigniter更新批处理不工作_Php_Codeigniter_Activerecord - Fatal编程技术网

Php Codeigniter更新批处理不工作

Php Codeigniter更新批处理不工作,php,codeigniter,activerecord,Php,Codeigniter,Activerecord,我有一个db表: ConfigID | Type | Key | Value -------------------------------------------------------------- 0 | "API" | "ClientID" | "iofoewi" 1 | "API" | "ClientSecret" | "eijfoiewjfioejfoiewjfoie" 以下面的代码为例: $data = arra

我有一个db表:

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')  
而数据库表却未被触及


有什么想法吗?

如果您正在使用CI 3.1.2,它可能会对您有所帮助

在我们的项目中。我们发现函数更新补丁有时会出现问题。用于更新的索引有时会出错。所以我发现替换的另一个函数是update\u batch\u real\u index 在文件/yourproject/system/database/DB\u query\u builder.php中

从使用到现在已经3个月了,我们再也没有发现任何错误。
也许你应该试试。

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