Php和mysql显示列名

时间:2012-12-19 10:06:04

标签: mysql

我有以下字段的表格

+----+------+----------+----------+----------+
| id | name | sports_1 | sports_2 | sports_3 |
+----+------+----------+----------+----------+
|  3 | jack |        1 |        0 |        1 |
+----+------+----------+----------+----------+

我想只显示包含1的列名。要获得以下结果。

Jack does sport_1 sports_3

2 个答案:

答案 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