2012-11-20 64 views
2

問題:在標題中所述PHP&MySQL - 哪個變量類型最適合這個數組?

項目:我的PHP黑手黨/暴徒戰略遊戲

原因問:我不確定我怎麼會字這個問題變成一個有點相關的谷歌搜索。

我想知道哪個MySQL的變量類型我應該使用的陣列。我將把這個陣列分解成一個ID列表,包括該玩家羣體中的所有人。

例MySQL數據BELOW:

PlayerId -------- Mob //Lables 

134 ------------- '23','59','12','53','801' //Values 

這將隨後使用在PHP explode()成一束包含的玩家在該人暴民IDS整數的分解。

我想暴徒領域有無限的字符長度,讓玩家可以有HUGEE小怪。

我想我可以簡單地使用longtextset類型,但我不完全確定。一旦我釋放遊戲,我不希望任何錯誤,我希望我的方法保持清潔和正確。

非常感謝您百忙之中閱讀這封信的時候,我希望你能有所幫助。 :)

+3

正在做一個n對m的關係嗎?或者實際上,1對n可能就足夠了,看到一個玩家只能在一個暴民中,對吧?這樣,你可以讓數據庫爲你做很多事情。 –

+0

@Grüse:在我看來,遠離「一個玩家只有一個暴徒」,上面的PlayerId'134'是五個小怪。 – eggyal

+0

@eggyal:你說得對,我似乎誤解黑手黨暴徒成員及其看似非專有使用權的概念;) –

回答

0

我很長一段時間以前這樣做,但我碰巧經過我的賬號瀏覽時遇到的問題。

有沒有任何具體的「暴徒」。你的「暴民」基本上就像一個朋友名單。這不是一個羣體。這只是一羣連接到你的人。

我相信,我只是使一排「暴徒成員」,只是把其他玩家的ID,用逗號分開,然後在PHP我爆發了用逗號作爲分隔符的字符串。

5

您應該創建玩家小怪相關聯的表:

CREATE TABLE PlayerMobs (
    PlayerId INT UNSIGNED NOT NULL, 
    MobId INT UNSIGNED NOT NULL, 
    FOREIGN KEY (PlayerID) REFERENCES Players (PlayerID), 
    FOREIGN KEY (MobID) REFERENCES Mobs (MobID) 
); 

,然後在查詢您的其他表join它作爲必需的。

我已經加入FOREIGN KEY constraints,以確保在PlayerMobs表只存在有效PlayerIDMobID值,但要注意的是,這些限制目前只適用於InnoDB存儲引擎的工作。

+0

沒錯,或者 - 如果一個玩家只能在任何給定時間一個怪物 - 你可以在玩家表中添加一個「MobId」列,以節省玩家的效忠。 –

0

您可以嘗試

CREATE TABLE PlayerMobs (
PlayerId INT UNSIGNED NOT NULL, 
MobId Text UNSIGNED NOT NULL);