在插入我趕上了唯一約束mysql_errno()1062PHP MySQL的INSERT失敗,因爲唯一約束
這工作得很好,但我想找到現有的行復權或修改。
是否有方法可以在插入失敗時獲取行ID?我試過mysql_insert_id()但意識到只會返回我插入的行(或插入失敗),因此,我得到0.
是否有沒有選擇,只能發出另一個mysql_query,只需執行select值?
我只是想確保沒有更好,更快,更經濟的方法來做到這一點。
在插入我趕上了唯一約束mysql_errno()1062PHP MySQL的INSERT失敗,因爲唯一約束
這工作得很好,但我想找到現有的行復權或修改。
是否有方法可以在插入失敗時獲取行ID?我試過mysql_insert_id()但意識到只會返回我插入的行(或插入失敗),因此,我得到0.
是否有沒有選擇,只能發出另一個mysql_query,只需執行select值?
我只是想確保沒有更好,更快,更經濟的方法來做到這一點。
如果您正試圖插入行,如果新的或更新現有的值,然後REPLACE INTO是你需要的。如果存在約束,則考慮INSERT ... ON DUPLICATE KEY UPDATE Syntax,因爲REPLACE INTO將DELETE,然後INSERT。
不替換刪除現有的行嗎?我想在覆蓋之前看到該行和內容,或者至少讓用戶選擇修改它。 – sjw 2010-05-03 05:05:39
它確實 - 如果你需要檢索行,如果它已經存在,那麼除了使用SELECT語句之外,我不會看到其他任何選項。 – 2010-05-03 05:07:36
您必須檢查表中是否存在任何「唯一」鍵(SHOW CREATE TABLE
會將它們全部列出),然後在您嘗試的插入查詢中查詢表中的關聯值。所以,如果你要插入域A,B,C,d和B,C對他們的唯一鍵,則:
SELECT id, B, C FROM table WHERE B=$B and C=$C;
除了首先選擇其他方式。 – 2010-05-03 05:16:16