2015-06-21 64 views
0

我正在使用REPLACE INTO更新mod_id是唯一/主鍵的行。如果它被插入,我想知道mysql_inserted_id()獲取插入的ID如果插入發生REPLACE INTO

我嘗試這樣做:

$query_2 = $DB->query('REPLACE INTO mods (mod_id, group_id, css) VALUES (0, 4585, "css string")'); 
$inserted_id = mysql_insert_id(); 

但我不斷收到的0$inserted_id即使插入happend。

+1

mod_id是你的主要嗎? –

+1

是mod_id AUTO_INCREMENT嗎? – Hatef

+0

嗯謝謝你們在secon mode_id不是auto_incrment中找到了它。我解決這個問題! Btw有無論如何使文本字段主/唯一? – Noitidart

回答

1

我覺得,最好用INSERT... ON DUPLICATE KEY UPDATE。原因在於REPLACE總是刪除舊行,然後插入新行。 INSERT ... ON DUPLICATE KEY UPDATE時,嘗試儘可能更新現有行(基於主鍵或唯一鍵)。你可以last_insert_id()

+0

謝謝cjg,我的問題是,我想使獨特的領域是一個TINYTEXT領域,我不能使它獨特,這可能嗎? – Noitidart

+0

文本/ blob字段的用途是不同的,並且不能具有唯一的索引。使列成爲VARCHAR(100)左右,並且可以添加索引。同時製作如此獨特的長字符串也不會帶來好的表現。我會建議驗證唯一性檢查是在應用程序代碼中,而不是在數據庫中 – georgecj11