Php Codeigniter更新批处理不工作
我有一个db表:Php Codeigniter更新批处理不工作,php,codeigniter,activerecord,Php,Codeigniter,Activerecord,我有一个db表: ConfigID | Type | Key | Value -------------------------------------------------------------- 0 | "API" | "ClientID" | "iofoewi" 1 | "API" | "ClientSecret" | "eijfoiewjfioejfoiewjfoie" 以下面的代码为例: $data = arra
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更挑剔。我已经删除了我的答案,因为它并没有真正的帮助。