2013-08-05 37 views
0

在发布之前,我已经足够搜索了。如何使用单个查询获取上次更新的行

我的表结构:

aid | bid | cid | did |

aidbid一起是主键

当我使用where clause for aid, bid更新cid的值时,我也想获得updated rowdid value

事情是这样的:

$this->db->set('cid', 1, FALSE) 
     ->where(array(
        'aid' => $a_id, 
        'bid' => $b_id 
       )) 
     ->update('my_table') 
     ->select('did'); 

上面的查询说:

Fatal error: Call to a member function select() on a non-object in...

我尝试这样:

How to get ID of the last updated row in MySQL?

这就像3个查询。

+0

为什么使用更多的查询是一个问题? –

回答

0

我建议读取您即将更新的值,将它们的ID存储在一个数组中,然后使用WHERE id IN (1, 2, ...)运行UPDATE

你正在试图做的是什么MySQL不支持。您至少需要运行2个查询,并且由于您第一次获取值并已知道要更新的值,因此您也可以在UPDATE之后重新创建新行及其值,而无需使用查询。

在你给出的例子:

$this->db->set('cid', 1, FALSE) 
     ->where(array(
        'aid' => $a_id, 
        'bid' => $b_id 
       )) 
     ->update('my_table') 
     ->select('did'); 

set()where()select()返回建立在查询中的对象。然而update()返回的值是结果,并且没有函数select()而不是set()where()

相关问题