2013-03-18 57 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