2011-02-16 75 views
7

這是我的查詢:如何獲取更新行的ID行?

INSERT INTO table (value) VALUES (value) ON DUPLICATE KEY UPDATE value=value 

隨着mysql_insert_id()我得到了新插入的ID,但如何獲得更新的行的ID?

我試過mysql_insert_id()但是,對於更新的行,我得到0

+0

我不認爲它可能在MySQL – 2011-02-16 13:11:16

+0

希望看到張貼什麼樣的答案。過去有同樣的問題。我總是在之後做了選擇。 – David 2011-02-16 13:21:06

回答

0

有沒有辦法做到這一點。你可以做SELECT id FROM table WHERE value = value;

0

既然你已經有了一個WHERE聲明,你可以選擇一個不同的查詢。 mysql_insert_id()確實如此。從INSERT獲取ID。

+0

用mysql_insert_id()我得到0(在更新的行)! – Leonardo 2011-02-16 13:13:50

0

從MySQL 5.1.12開始,it's possible。 MySQL的last_insert_id函數將爲插入和更新操作返回自動增量字段的值。

0

您將通過mysql_insert_id()php函數獲取insert id。

然而,當與ON DUPLICATE KEY UPDATE結合使用時,如果您希望mysql_insert_id()爲您提供已更新的密鑰,而不是生成的已插入的新密鑰,則必須多做一點。

更改SQL以

INSERT INTO table (value) VALUES (value) 
     ON DUPLICATE KEY UPDATE id=LAST_INSERT_ID(id),value=value; 

查看更多信息here