【发布时间】: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