2017-05-26 113 views
0

我想每次有人連接到我的網站時設置一個自動遞增的ID。是在mysql中自動遞增循環?

但是當用戶重新加載或退出時,我想清除與該用戶標識相關的信息,並使用此標識匹配新用戶而不是創建新標識。 噹噹前用戶/ ID列表已飽和時,會創建新ID。

如果我沒有弄錯,phpMyAdmin中的MySQL自動遞增選項只是自動遞增。你知道是否有一種方法可以像自動增量一樣檢查時直接設置它? PS:我不想隨機編號。我想把PHP循環分割用戶,如果我使用線性ID模式,會更容易。

感謝

+1

你想要做的是沒用的。相反,您需要描述您想要分割用戶的操作。 –

+0

嗯,我想你想存儲的.auto增量id與唯一..然後你檢查是否同一用戶再次來到您的網站,然後檢查..用戶已經與比不再提供ID ..嗯 –

+0

我有開發一個非常好的和簡單的算法來將這些用戶分成多個房間,並且與這個ID系統完全吻合。我知道我可以爲用戶提供一個與隨機ID相關的相同內容的數字。但如果該ID直接更好。 –

回答

1

可以存儲在某個數據庫中的下一個可用的ID,從1開始。當你分配一個ID用戶,您分配下一個可用的ID,則增加了「下一個可用的ID」直到目前沒有人擁有該ID。刪除用戶時,如果用戶的標識小於下一個可用標識,則將下一個可用標識更新爲刪除用戶標識。例如:

  • NA-ID = 1
  • 添加用戶1(ID設置爲1,NA-ID = 2)
  • 添加用戶2(ID套2,NA-ID = 3)
  • 用戶3添加(ID套到3,NA-ID = 4)
  • 刪除用戶2(ID爲2,小於4,所以NA-ID = 2)
  • 添加用戶4(ID套2,NA- ID嘗試3,但已採取,所以去4)

等...

+0

感謝您的回覆,非常聰明的方式。我想我可以做一個這樣的循環(aproximative語言): for($ i = 0; $ i <$ idArrayLength; $ i ++){if($ idArray [i] == void){$ id = $ i; $ idFinded = true; break;} else {$ idFinded = false;繼續;}} if($ idFinded == false){array_push(); $ id = idArrayLength;} –

+0

如果它幫助你請標記爲接受答案:) –

+0

它的一個不錯的主意,我很欣賞,但我認爲上面的循環是最簡單的。也沒有真正回答這個問題。我想讚許你的帖子,但我沒有所需的信譽評分。 –