2013-03-18 59 views
0

近來即時通訊堅持這個代碼...如何根據值獲取列名?不可能?

我想知道的值相匹配的列名...

例如:

我有一個表稱爲最喜歡的與用戶ID和5最喜歡的列存儲餐廳的ID如下:

mySQL table

我打印了出來成一個列表視圖,當我刪除它們,我得到的restaurantID和T母雞搜索等於該值的列,然後將該列更新爲NULL。

對不起,如果我的問題困擾你...我自己很困惑。

所以我應該如何做SELECT語句?或者我會馬上更新?

SELECT $column from favorite WHERE loginID= 'admin' AND $column = '99'? 

UPDATE favorite SET $column = 'NULL' WHERE loginID = 'admin'? 

應該在$列是什麼呢? >。 <

+2

你真的應該考慮規範化你的數據庫。而不是有不同的列,建立一個表與字段loginID和favoriteID ...然後每個用戶可以有任意數量的收藏夾,你可以很容易地刪除條目'WHERE loginID =? AND favoriteID =?'。 – 2013-03-18 08:26:08

+0

謝謝!其相同的建議從@ ZombieHunter – 2013-03-18 08:38:16

回答

2

你真的應該瞭解database normalization,創造一個適當的數據庫模式,如:

表登錄:

loginID | name 
     1 | foo 
     2 | bar 

表login_favorite:

loginID | favoriteID 
     1 |   1 
     1 |   2 
     2 |   2 

表最愛

favoriteID | name | ... 
     1 | foo | ... 
     2 | bar | ... 

現在加入這些表,並享受有一個乾淨的數據庫的感覺...

+0

是否可以擠在一張桌子上?如果這是不可能的或非常複雜的,可能我會用你的方式= D – 2013-03-18 08:36:57

+0

一切皆有可能,但它並不乾淨,每個使用模式的開發人員最終都會考慮私下化你:-) – CodeZombie 2013-03-18 08:40:57

+0

不是(login_favorite)如果我將loginID列添加到最喜歡的表中,那麼表格會變得毫無用處。 – 2013-03-18 10:34:16