2013-08-05 35 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()

相關問題