一直在尋找這方面的例子,但顯然我不知道的術語不夠好,找到了答案:重複的記錄到同一個表的變化PHP的MySQL
利用PHP/MySQL的,我試圖複製在編輯數據的一部分時在表格中記錄。
有一個現有的表的「信息」,看起來像這樣:
1 ID - Int11 AutoIncrement
2 elementID - Int11 Unique
3 text - text utf8
4 loopID - Int11
5 created - datetime
6 modified - datetime
兩者「elementID」和「loopID」字段包含在其中的最後四位數字代表一個嵌入式標識符值,在這種情況下系統中的'頁面'。因此,例如:
頁 '9000' elementID的記錄爲
100019000
100029000
100039000
和頁面 '9000' loopID的記錄爲
1009000
1019000
1029000
頁 '9001' elementID的記錄被記錄爲
100019001
100029001
100039001
和Page'9001'loopID的記錄被記錄爲
1009001
1019001
1029001
希望你能明白。
我想要做的是創建一個新頁面(比如9002),最終用戶可以選擇從前一頁複製所有記錄數據(比如在這種情況下,他們想複製9001)。
在深入研究之前,我真的需要明白最好的方法是什麼。
起初我以爲我想要查詢所有匹配9001的記錄到一個數組中,用元素ID和循環中的所有最後4位9001替換爲9002,將「創建」和「修改」日期替換爲今天,然後將結果數組作爲新條目寫回數據庫中?如果是這樣,在替換髮生的時候,在查詢期間還是在回寫數據庫期間?
接着,當我開始還以爲這是導致我不知道這是否應該以這樣的方式來完成與此類似,而不是:
INSERT INTO information...
SELECT REPLACE...
FROM information
[WHERE ..]
我可以看到有涉及這一點,產生它足夠的元素對於像我這樣的數據庫業餘愛好者來說並不容易......如果有人能指點我一個這個過程的適當例子,那將是一個很大的幫助。
嗨,非常感謝!託比可能是正確的,因爲我的經驗(或缺乏) - 但這看起來太酷了,不會嘗試......我遵循這裏的想法,雖然你比我的朋友聰明得多;-)不知道我明白'where elementID mod 10000'部分 - 我認爲國防部是爲了返回分部剩餘部分?所以我很難包裝我的頭怎麼會輸出...我會一直在想一些更像substr($ input,-4)...?無論如何,我一定會試一試並再次報告tx! – Soyo
剩餘部分正是你想要的。看看這些例子http://sqlfiddle.com/#!2/c960a/39當divider是一個10,100,1000等等時,它只會剪掉上面的部分,類似於substring,但是數字。 –