我有以下字段的表格
+----+------+----------+----------+----------+
| id | name | sports_1 | sports_2 | sports_3 |
+----+------+----------+----------+----------+
| 3 | jack | 1 | 0 | 1 |
+----+------+----------+----------+----------+
我想只显示包含1的列名。要获得以下结果。
Jack does sport_1 sports_3
答案 0 :(得分:7)
你真正想要的是另一个表结构。我会详细说明一下。
你所描述的是一种多对多的关系。列中的运动实际上应该包含在另一个名为“sports”的表中,在“users”表和“sports”表之间,你有一个名为“users_to_sports”的新表连接这两个表。
检查http://sqlrelationship.com/many-to-many-relationship/以获得更深入的解释
答案 1 :(得分:1)
这只是解决方法,您可以改变表的结构,如chrisR所说
但如果你愿意,可以在这里查看它是否有帮助。
$con = mysql_connect("localhost","root","admin");
if (!$con)
{
die('Could not connect ya rafik : ' . mysql_error());
}
mysql_select_db("mydatabase", $con);
$query = mysql_query("SELECT * FROM mytable2 ORDER BY name ");
// please use PDO or mysqli instead.
然后你像这样通过php管理结果
while ($column_data = mysql_fetch_assoc ($query)) {
echo $column_data['name']." does : ";
if ($column_data['sports_1'] == 1 ){echo " Sport1 ";} else {}
if ($column_data['sports_2'] == 1 ){echo " Sport2 ";} else {}
if ($column_data['sports_3'] == 1 ){echo " Sport3 " ;} else {}
echo "<br />" ;
}
数据库就像那样
id name sports_1 sports_2 sports_3
1 Mark 1 0 1
2 John 0 1 1
结果将是这样的:
John does : Sport2 Sport3
Mark does : Sport1 Sport3